PCREのパターン修飾子 "D" | hirosukeのblog

PCREのパターン修飾子 "D"

http://codezine.jp/a/article/aid/1212.aspx


PHPのpreg_matchなどの関数で、/^hoge$/ みたいな正規表現を使うときに、末尾に改行が入っていても一致してしまうので注意が必要な訳だけれど、パターン修飾子として"D"を指定することで一致しないと判断させることができるとのこと。


D修飾子は知らなかったなぁ。。。と思ってちょっと調べてみたら


http://jp.php.net/manual/ja/reference.pcre.pattern.modifiers.php


D (PCRE_DOLLAR_ENDONLY)
この修飾子を設定すると、パターン内のドルメタ文字は、検索対象文字列の 終わりにのみマッチします。この修飾子を設定しない場合、ドル記号は、 検索対象文字列の最後の文字が改行文字であれば、その直前にもマッチします。 この修飾子は、m を設定している場合に無視されます。 Perl には、この修飾子に等価なものはありません。

とのこと。PCREってPerl互換だけでなく、拡張もしてるのですね。