PHPの正規表現(preg系)のパターン修飾子

PHPにはpreg_matchやpreg_replaceという関数があります。正規表現を使って検索、置換するためのものです。
これらの関数は「preg_match(“/.*/i”,$str)」のように使います。この「/.*/i」の「i」の部分がパターン修飾子です。
よく使うものについてまとめます。

「g」

JavaScriptでは、複数回の検索(合致する文字列全て)で使用しますが、PHP(preg系)では「g」は使いません。
検索については「preg_match_all」を使います。
置換については「preg_replace」を使い、「g」を指定しなくても複数回の検索をすることになっています。

「i」

大文字と小文字を区別しません。

「m」

正規表現では、”^”で文字列の先頭、”$”で末尾にマッチしますが、修飾子「m」を使うと改行の直前と直後にもマッチします。

$str="abc123xyz\nabc456xyz";
$ms=preg_match_all("/^abc.*xyz$/m",$str);

「m」を使わないと「abc123xyz\nabc456xyz」にマッチします。
「m」を使うと「abc123xyz」「abc456xyz」にマッチします。

「s」

正規表現の”.”は「改行以外の任意の文字」ですが、修飾子「s」を使うと「改行を含む任意の文字」にマッチするようになります。

「u」

UTF-8として処理されます。日本語(漢字)を使う場合に指定するとうまくいく場合があります。

コメント

  1. […] このサイトの説明が直感的でわかりやすかった。 https://stabucky.com/wp/archives/4539 […]

  2. […] PHP の正規表現 (preg系) のパターン修飾子 | You Look Too Cool […]

タイトルとURLをコピーしました