[英]Using regex to match a specific pattern
我正在尝试匹配所有不以“ false1”或“ false2”开头且以true结尾的字符串,但是正则表达式由于某些原因不匹配。 我究竟做错了什么?
$text = "start true";
$regex = "~(?:(^false1|false2).+?) true~";
if (preg_match($regex, $text, $match)) {
echo "true";
}
预期结果:
true
实际结果:
null
您可以使用负前瞻。
^(?!false[12]).*true$
如果您真的想使用边界,请尝试一下,
^(?!false[12]\b).*\btrue$
更新:
^(?!.*false[12]\b).*\btrue$
(?!.*false[12]\\b)
它断言,该字符串包含任何字符,但不是子串负先行false1
或false2
,它必须以字符串结尾true
,这就是为什么我们增加了true$
在最后。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.