概要
最近の正規表現 (PCRE) はいろいろ拡張されていて、以前では考えられなかったほど高機能になっています ・・・
ということを最近になって知ったので、近年(?)導入された新しい機能を中心に、いろいろ試した結果をメモしました。
Ruby 1.9.3 と Ruby 2.1.5 を使いましたが、試した範囲では、両者に違いはないようでした。
このあたりの拡張仕様は、呼び出し元の言語やバージョンによっても実装レベルや細かい仕様が異なるため、以下はあくまで Ruby の場合、他の言語 (C#, Java Script, php, ...) でも似たようなことができることも、できないこともある、という方向でご理解ください。
目次
-
フリーフォーマット / /x による正規表現の分かち書き
- 文字クラスの中の # や空白はエスケープの必要がない
-
名前付きグループ (?<name> )
- MatchData へのインデックスは Symbol でも良い
- 名前付きグループによるキャプチャを通常通り数値で参照することも可能
- 名前無しグループはキャプチャしなくなる
- 正規表現中では名前付きグループを数値で後方参照できない
- 名前付きキャプチャの例
- 同じ名前が複数回現れるときは最後のキャプチャを返す
- 複雑な文字列を要素に分解
-
相対的な後方参照 \k<-n>
- 正規表現を結合するときに便利
- MatchData へも負のインデックスを与えられる
-
正規表現自体を後方参照 \g<-n>
- サブルーチンのように使えます
- 正規表現が複数回呼ばれたときの内部キャプチャ
- 正規表現の再帰呼び出し
-
条件付き正規表現 (?(n) )
- 代替案
本文はこちらです