【发布时间】:2019-05-17 19:42:22
【问题描述】:
我正在尝试匹配单词边界内的字符串。
preg_match('/\bTORUK Cirque du Soleil\b/ims',
'Show: TORUK Cirque du Soleil with Lady Gaga', $matches);
Output: TORUK Cirque du Soleil
这很完美。但是当字符串中有引号时,它不会按预期工作。例如,
preg_match('/\bTORUK "Cirque du Soleil"\b/ims',
'Show: TORUK "Cirque du Soleil" with Lady Gaga', $matches);
它根本不匹配。在这种情况下,预期的输出是TORUK "Cirque du Soleil"。
尝试使用\B 即非单词边界,但在没有引号的字符串中中断。
已创建fiddle here。
【问题讨论】:
-
引用手册:“单词边界是主题字符串中当前字符和前一个字符不匹配 \w 或 \W 的位置(即一个匹配 \w 和其他匹配 \W)” - 与
"[space]你没有那个。 -
是的,如果双引号单词边界不属于。这些类型的情况有什么解决方法吗?
-
你为什么使用
\b?这不是单词边界。 -
@user3783243 你用了两个
(?<!\w)。一个应该是(?!\w)。 -
@revo,感谢您提供的环视解决方案 :)