在regexp中使用单词边界

时间:2017-01-11 13:00:04

标签: php regex

我尝试使用regexp匹配某个短语,使用单词边界,但它没有按预期工作。我做错了什么?

if (preg_match("~\b(and you[?])\b~", " and you? ")) { echo "success"; }

不回应"成功"。

但是不包括单词边界:

if (preg_match("~(and you[?])~", " and you? ")) { echo "success"; }

回声"成功"由于某些原因。

2 个答案:

答案 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"; }

这是“和你?”的所有实例。后跟空格类型字符或字符串结尾。