2

Q1:我正在用 php 编写正则表达式,但没有成功。我想匹配以下内容:

    so i would

如果不是,则匹配:

    so i

进而:

    i would

    so
    i
    would

这是我的代码:

\b(so i|i would|so i would|(so|i|would))\b

它只匹配:所以,我,会,所以我,我会....但不匹配所以我会?

4

3 回答 3

3

正确订购您的正则表达式。

\b(so i would|so i|i would|(so|i|would))\b

将要匹配的最长字符串放在左侧。是左关联的|,因此,在您的正则表达式版本中,匹配较短的字符串。

于 2012-08-01T04:59:35.193 回答
0

只是放在开头

\b(so i would|so i|i would|(so|i|would))\b
于 2012-08-01T04:59:58.847 回答
0

将最长模式放在组的左边:\b(long|...|short)\b
另一种解决方案:\b(so i would|i would|would|so i|so|i)\b
ps这是NFA正则表达式引擎功能,请参阅“掌握正则表达式”

于 2012-08-01T06:10:13.037 回答