#フラグって何?
正規表現では
/(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になる