「false1」または「false2」で始まらず、trueで終わる文字列を一致させようとしていますが、何らかの理由で正規表現が一致していません。
$text = "start true";
$regex = "~(?:(^false1|false2).+?) true~";
if (preg_match($regex, $text, $match)) {
echo "true";
}
期待される結果:
true
実結果:
null
回答:
回答№1は1ネガティブ先読みを使用できます。
^(?!false[12]).*true$
本当に境界を使用したい場合は、これを試してください、
^(?!false[12]b).*btrue$
更新:
^(?!.*false[12]b).*btrue$
(?!.*false[12]b)
文字列にサブ文字列ではなく任意の文字が含まれることをアサートする負の先読み false1
または false2
文字列で終わる必要があります true
、それが追加された理由です true$
最後に。