PHP
正規表現

正規表現のフラグ


フラグって何?

正規表現では

/(pattern)/

と記述するが、

パターンの後に以下のようにフラグを設定することができる。

/(pattern)/(flag)


フラグの種類

※PHPを使って各フラグの種類について例を取り上げます。


g

最初の1個だけでなく、文字列の最後まで検索を繰り返す。グローバルマッチとも呼ばれる。

例)

preg_replace('/aa/', 'cc', 'aabbccaabbcc') → ccbbccaabbcc

このやり方だと一番初めのaaがccに置換される

preg_replace('/aa/g', 'cc', 'aabbccaabbcc') → ccbbccccbbcc

gフラグを使うと文字列の全てのaaがccに置換される


i

大文字小文字を区別せずにマッチうる

例)

preg_match('/XYZ/', 'xYz') → false

大文字小文字を区別するため、マッチしていないと判断されてfalseになる

preg_match('/XYZ/i', 'xYz') → true

iフラグを使うと大文字小文字を区別しないため、マッチしていると判断されてtrueになる


m

^と$がそれぞれ先頭と末尾だけでなく、行頭と行末にもマッチする

例)

preg_match('/^hello$/', 'hello\nworld') → false

$は文字列の末尾のみにマッチするのでfalseになる

preg_match('/^hello$/m', 'hello\nworld') → true

mフラグを使うと$が文字列の末尾と行末にマッチするのでtrueになる