. * ( A . * B . * C | A . * C . * B | B . * A . * C | B . * C . * A | C . * A . * B | C . * B . * A ) . * のように書ける。(53 文字) 同じものを先読みを使って書くと、 ( ? = . * A ) ( ? = . * B ) ( ? = . * C ) . * のようになる。(23 文字) 複雑なものをより短かく書くことができる。 表現力が高い。 先読みと後読みの可能な、O(N) の正規表現エンジンの実装 6
* f o o ) 2: ( ? < = b a r . * ) また、1 文字目より前の先読み、 最後の文字より後ろの後読みに 対応するため、 入力文字の前後に ^ と $ を追加する。 ^ o o f o o a a b a r o o $ 1 1 1 1 . . . . . . . . . . . . . . . . . . . . 2 2 2 2 ※ この処理は先読み・ 後読みがいくつあっても入力文字列の長さに 対して線形時間で行える。 先読みと後読みの可能な、O(N) の正規表現エンジンの実装 13