preg_* に関する覚え書き

Date
2006-10-22 (Sun)
Category
php

正直言って、しょうもないことですが、ちょっとハマったので書き記しておきます。

PHP の Perl 互換正規表現 (PCRE) を使った関数群、で行頭記号 ( ^ ) を使ってもなんかマッチしないなぁ、とちょと悩みました。よくドキュメントを読みましょう。。

パターン修飾子 -- 正規表現パターンに使用可能な修飾子

現在使用可能な PCRE 修飾子の一覧を以下に示します。 括弧の中の名前は、これらの修飾子に関する PCRE 内部の名前です。 修飾子中での空白文字および改行は無視されます。他の文字はエラーになります。
〜〜 snip 〜〜
m (PCRE_MULTILINE) デフォルトで、PCRE は、検索対象文字列を(実際には複数行からなる 場合でも)単一の行からなるとして処理します。 「行頭」メタ文字 (^) は、対象文字列の最初にしかマッチしません。 一方、「行末」メタ文字 ($) は、文字列の最後、または (D 修飾子が設定されていない場合) 最後にある改行記号の前のみにしかマッチしません。 この動作は Perl と同じです。

だ、そうです。つまり、いわゆる空白行をマッチしたいときは…

preg_match("/^$/m", $haystuck, $match);

とかする必要があります。

Comment:0

Comment Form

Remember Me?


Trackback:0

TrackBack URL for this entry
http://blogs.grf-design.com/mt/mt-tb.cgi/194
Listed below are links to weblogs that reference
preg_* に関する覚え書き from The Croton

Return to Page Top