如何查找本身不包含某个子字符串的字符串

How to find strings that don't contain within itself a certain substring

例如我有文本:

goodstring sometext other text perfectstring 
goodstring badstring perfectstring 
goodstring 14554 sometext perfectstring

我需要一个正则表达式来查找除 "goodstring" 和 "perfectstring" 之间包含 badstring 的所有行之外的所有行。 所以我需要这样的东西:

goodstring\s(^badstring)\sperfectstring

用什么替换^badstring?

您可以使用负先行模式:

goodstring\s(?:(?!badstring).)*\sperfectstring

RegEx Demo

  • (?!badstring) 是否定的先行断言,这意味着我们在下一个位置 badstring 没有
  • (?:(?!badstring).)* 将再匹配 0 个在下一个位置没有 badstring 的字符。