7

我有一个自动生成的正则表达式,它基本上是一个大的“或”组,如下所示:

(\bthe\b|\bcat\b|\bin\b|\bhat\.\b|\bhat\b)

我注意到,如果

hat.

它只匹配“帽子”,而不匹配“帽子”。如我所愿。有没有办法让它更贪婪?

更新:忘记了单词边界,对此感到抱歉。

4

1 回答 1

11

hat\.beforehat放在正则表达式中。交替中的第一个匹配表达式获胜。hat匹配hat.所以hat\.永远不会被检查。

更好的方法是将那部分写成hat\.?而不是hat\.|hat. 这使得期间是可选的,因此您不需要交替使用两个术语。

编辑后:

.和空格之间没有单词边界(两者都是非单词字符)。所以只会在句号后面紧跟另一个字母的地方\bhat\.\b匹配。hat.x这意味着在例如一个句子中,hat将是匹配的那个。但是,我看到您找到了解决方案。

于 2012-04-09T03:17:06.270 回答