在排除以特定表达式开头的行后选择行的一部分

Selecting part of a line after excluding lines that begin with a specific expression

我可以匹配我正在寻找的内容,也可以排除正确的行,但是当我尝试同时执行这两项操作时,事情变得不稳定

我在 regexr 和其他网站上尝试了一堆废话,但我可能遗漏了一些 regex 的基础知识。

我正在尝试匹配等号和之后除了以 (space)(space)type:

开头的行
something = something

somethingelse = something

  type = something

捕获我想要的内容的正则表达式:

=.*

排除类型行的正则表达式:

^(?!  type)

放在一起什么都不匹配:

^(?!  type)=.*

除非我想要整行:

^(?!  type).*

理想情况下,前两行将从等号到行尾。

您可以使用捕获组和否定字符 class 来首先匹配除等号或换行符之外的任何字符。

然后匹配 = 并捕获一组中的其余行。

^(?!  type\b)[^=\r\n]*=(.*)
  • ^ 字符串开头
  • (?! type\b)断言直接在右边的不是2个空格type和一个单词边界
  • [^=\r\n]*= 匹配 0+ 次而不是 = 或换行符
  • (.*) 捕获组 1 中除换行符外的任何字符

Regex demo