正規表現パターンメモ
最終更新日: 2021-04-02
パターンを思い付く都度に更新される予定。
yyyy-MM-dd HH-mm-ss を yyyy-m-d に変換¶
/(\d{4})-0?(\d{1,2})-0?(\d{1,2}).+/$1-$2-$3/
3 桁区切りカンマ¶
/(\d)(?=(\d{3})+(?!\d))/$1,/g
- 直後に\d{4}でなく、\d{3}のパターンのある\d をキャプチャし、カンマを付与
ネストプロパティの 2 段目(bar)以降を配列に置換¶
/(?<=\$request->.+?)->((?<!--\$request--->)(?<=->)([a-z_]+))+/['$2']/gi
- まず
(?<=\$request->.+?)
はキャプチャされず、この次に->
があるのが前提、->は削除するので先読み・後読み・キャプチャはしない - 次に式などで文章が両辺にあることを考慮して、文字列内に
\$request->
が再度含まれないことを(?<!--\$request--->)
として条件にする- これを入れてないと一行中の一文と解釈されるので、別の文と解釈させるため
- 次にプロパティ名の前には
->
が来るので、それを(?<=->)
として条件付けする - 最後に
([a-z_]+)
でプロパティ名であろうものを指定する - 2-4 の繰り返し(ルートにある 2 個目のカッコ)に対して置換を掛けることでプロパティ名を配列に置換できる
- 但し 1 で指定している
->
単体は繰り返し対象外なのに繰り返し適用されているが、この理由はよくわかってない- 恐らく単純に
(?<=\$request->.+?)
の後ろにある->
が全部消えている?
- 恐らく単純に
- まず
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
但しメソッドは対象外にしたい場合¶
/(?<=\$request->.+?)->((?<!--\$request--->)(?<=->(?![a-z_]+\(\)))([a-z_]+))+/['$2']/gi
->
の後に来るメソッド構文を除外するために、(?![a-z_]+\(\))
を追加(?<=->(?![a-z_]+\(\)))
とすることで->
の後に来る(?![a-z_]+\(\))
を除外しつつ、->
の後に来る([a-z_]+)
をキャプチャできる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|