正则表达式需求:匹配指定单词,排除其后接特定单词的情况
正则表达式解决方案:匹配"union"但排除"union europea"
直接用负向先行断言就能解决这个问题,最终正则表达式如下:
\bunion\b(?!\s+europea\b)
各部分解释:
\bunion\b:通过单词边界\b确保匹配的是独立的"union"单词,彻底排除"reunion"这类带前缀的拼接词。(?!\s+europea\b):这是负向先行断言,作用是检查当前匹配的"union"后面没有紧跟一个或多个空白字符(空格、制表符等)+ 独立的"europea"单词。
匹配/不匹配示例:
- 会被匹配的场景:
- "the union of local communities" 中的"union"
- "union loyalty is key" 中的"union"
- 不会被匹配的场景:
- "reunion with friends" 中的"union"(无独立单词边界)
- "union europea" 中的"union"(后面紧跟指定单词)
- "union europea"(多个空格分隔的情况也会被排除)
如果需要严格限定union和europea之间只有单个空格,把\s+改成\s即可。
内容的提问来源于stack exchange,提问作者Alberto Agudo Dominguez
相关产品推荐
相关产品推荐

