PHPカンファレンス福岡での発表資料です。
![PHPで学ぶVM型正規表現エンジンの仕組み](https://cdn-ak-scissors.b.st-hatena.com/image/square/463df8c0ed94d770c9751e0426689bc5d1cc8fef/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F4aa0f7e21b9d4c2ebc870425dae7db39%2Fslide_0.jpg%3F4982856)
分かっているようで分かっていない正規表現の欲張り戦略。 欲張りとバックトラック 基本的には正規表現(の実装)は欲張りです。できるだけ長い文字列をマッチしようと心がけます。しかし、それによってマッチに失敗しそうであったときにはしぶしぶ手放します。 と、これが何を意味するのか。 単純な例 正規表現 A* マッチ対象 AAAAAAAAAAAAAAAAAAAAA A*のマッチ箇所 AAAAAAAAAAAAAAAAAAAAA (全体にマッチする)A* というのは、0文字以上のAですから、AAAやらAやら、あるいはAの前の空の部分にさえマッチしますが、欲張って最大限にマッチしようとします。 少しだけ複雑に 正規表現 \w*\w マッチ対象 AAAAA \w*\wのマッチ箇所 AAAAA (全体) \w*のマッチ箇所 AAAA (4文字分)\w*\wという正規表現です。この場合は、\w*は1文字分だけ「
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く