Q1:我正在用 php 编写正则表达式,但没有成功。我想匹配以下内容:
so i would
如果不是,则匹配:
so i
进而:
i would
和
so
i
would
这是我的代码:
\b(so i|i would|so i would|(so|i|would))\b
它只匹配:所以,我,会,所以我,我会....但不匹配所以我会?
Q1:我正在用 php 编写正则表达式,但没有成功。我想匹配以下内容:
so i would
如果不是,则匹配:
so i
进而:
i would
和
so
i
would
这是我的代码:
\b(so i|i would|so i would|(so|i|would))\b
它只匹配:所以,我,会,所以我,我会....但不匹配所以我会?
正确订购您的正则表达式。
\b(so i would|so i|i would|(so|i|would))\b
将要匹配的最长字符串放在左侧。是左关联的|
,因此,在您的正则表达式版本中,匹配较短的字符串。
只是放在开头
\b(so i would|so i|i would|(so|i|would))\b
将最长模式放在组的左边:\b(long|...|short)\b
另一种解决方案:\b(so i would|i would|would|so i|so|i)\b
ps这是NFA正则表达式引擎功能,请参阅“掌握正则表达式”