首页 > 解决方案 > 正则表达式,仅当子字符串在字符串中,其他子字符串不在时才匹配

问题描述

所以我试图写一个正则表达式,由于某种原因我不能让它正常工作。

我想要做的是匹配字符串 1 是否在字符串中,但不是字符串 2。

例子

fault            shouldn't match
bucket           should match
fault bucket     shouldn't match
bucket fault     shouldn't match
true bucket      should match
bucket true      should match

到目前为止我能够来的壁橱是这个......这将在字符串中有桶的任何时候匹配,但如果字符串中有错误也会匹配

(?!fault)bucket

在此先感谢您的帮助。

标签: regex

解决方案


您可以使用这个否定的前瞻正则表达式:

^(?!.*\bfault\b).*\bbucket\b

正则表达式演示

  • 如果在行中的任何位置找到(?!.*\bfault\b)完整的单词,则负前瞻表达式匹配失败fault
  • .*\bbucket\b匹配bucket行中的任何位置
  • \b用于单词边界

推荐阅读