我尝试使用regexp匹配某个短语,使用单词边界,但它没有按预期工作。我做错了什么?
if (preg_match("~\b(and you[?])\b~", " and you? ")) { echo "success"; }
不回应"成功"。
但是不包括单词边界:
if (preg_match("~(and you[?])~", " and you? ")) { echo "success"; }
回声"成功"由于某些原因。
答案 0 :(得分:0)
单词边界与问号不匹配。因此,如果你在问号之前移动边界一词,它将回应成功"
if (preg_match("~(\band you\b[?])~", " and you? ")) { echo "success"; }
答案 1 :(得分:0)
在你的情况下,它将不匹配为“?”不是单词的一部分,因此最后\ b将不匹配,您可以尝试:
if (preg_match("~(\band you[?])(?=\s|$)~", " and you? ")) { echo "success"; }
这是“和你?”的所有实例。后跟空格类型字符或字符串结尾。