Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个自动生成的正则表达式,它基本上是一个大的“或”组,如下所示:
(\bthe\b|\bcat\b|\bin\b|\bhat\.\b|\bhat\b)
我注意到,如果
hat.
它只匹配“帽子”,而不匹配“帽子”。如我所愿。有没有办法让它更贪婪?
更新:忘记了单词边界,对此感到抱歉。
将hat\.beforehat放在正则表达式中。交替中的第一个匹配表达式获胜。hat匹配hat.所以hat\.永远不会被检查。
hat\.
hat
更好的方法是将那部分写成hat\.?而不是hat\.|hat. 这使得期间是可选的,因此您不需要交替使用两个术语。
hat\.?
hat\.|hat
编辑后:
.和空格之间没有单词边界(两者都是非单词字符)。所以只会在句号后面紧跟另一个字母的地方\bhat\.\b匹配。hat.x这意味着在例如一个句子中,hat将是匹配的那个。但是,我看到您找到了解决方案。
.
\bhat\.\b
hat.x