正则表达式中的小混淆| (管)

时间:2013-04-18 05:58:24

标签: regex

当我使用pattren时

"(see|see also) [\w\d]+"

on Text

see page 
see also page

但输出匹配是

see page 
see also

如果我互换了,请参阅

"(see also|see) [\w\d]+"

输出

see page 
see also page
我认为两者都是一样的。我可以知道为什么会这样吗?

1 个答案:

答案 0 :(得分:6)

删除替换并离开see [\w\d]+将匹配字符串“另请参阅页面”,因为see also满足。正则表达式与交替处理(至少在这种情况下)的方式是它将尝试按顺序将每个选项与模式的其余部分匹配,并在成功完成时立即停止,或者返回其中的替代选项失败。当你颠倒交替时,它首先尝试与see also匹配,但是会因“看到页面”而失败。

将其写为see( also)? [\w\d]+

会更有意义