めも。
否定先読み表現を用いる。
例えば下記のような感じ。
$str = 'aaabbbcccddd'; $pt = '/^(?!.*abbbc).*$/'; $res = preg_match($pt, $str); var_dump($res); ↓ int(0)
上記は$strの中に「abbbc」という文字が含まれていない場合に1を返す。今回は「abbbc」が含まれているため0が返される。
パターンを下記の様にした場合は当然1が返却される。
$str = 'aaabbbcccddd'; $pt = '/^(?!.*abbc).*$/'; $res = preg_match($pt, $str); var_dump($res); ↓ int(1)
否定の条件が作れただけで正規表現の幅がぐっと広がった。
一方、肯定先読みというものもあり例は下記の通り。
$str = 'aaabbbcccddd'; $pt = '/^(?=.*abbbc).*$/'; $res = preg_match($pt, $str); var_dump($res); ↓ int(1)
この場合、指定した文字列「abbbc」がターゲットの中に存在している場合、1を返すようになる。