正規表現 - 肯定の先読み・後読みなどの復習
下記の復習用
投稿してから気づいたが、上記の記事の「まとめ」読めばいいじゃん...
まぁ写経がてら学べたからよしとしよう。
\b 単語の境界
「単語の境界」を意味する。下記から英単語「ear」を抽出したい時に、「\bear\b」とすることで「hearing」にマッチせず「ear」のみ抽出できる。
ear is the organ of the sense of hearing.
肯定の後読み・先読み
肯定の後読み | (?<=abc) | abcの「直後の位置」から |
肯定の先読み | (?=abc) | abcの「直前の位置」において |
否定の後読み | (?< !abc) | abc以外の「直後の位置」から |
否定の先読み | (?!abc) | abc以外の「直前の位置」において |
< !の間のスペースは不要。はてな記法に対応するため空けているだけ。
後方参照
キャプチャした文字列を、正規表現内部で参照する技のこと。
<a href="http://google.com">http://google.com</a>
下記の正規表現のように、\1や\2などと参照できる。
<a href="(.+?)">\1<\/a>
| または
/','|':'/
Railsのバリデーションにおける^ &は\A \zを使うこと
validates :phone_number, format: { with: /\A\d+-\d+-\d+\z/ }
^ &はあくまで「行の」先頭と末尾。そのため、複数行入力に対応できずセキュリティ的に危険。
上記の理由で、「文字列の」先頭と末尾を意味する\A \zを使うべし。
なお、\Zは文字列の末尾の改行文字を許可してしまうので\zとする。
\ でエスケープ
[abc] という文字列にマッチさせたい場合、\[abc\] とすれば良い
同じように、test.rbという文字列にマッチさせたい場合、test\.rb と\.にしないと任意の1文字と判断されるので注意。