在排除以特定表达式开头的行后选择行的一部分
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 中除换行符外的任何字符
我可以匹配我正在寻找的内容,也可以排除正确的行,但是当我尝试同时执行这两项操作时,事情变得不稳定
我在 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 中除换行符外的任何字符