正则表达式删除以特定符号开头的所有行等等

Regular expression to remove all lines that begin with a specific symbol and more

我想使用正则表达式删除所有以 '!' 开头的行,除了最后一行以该字符开头的行。此外,应删除所有空行。

!第 1 行

!即第2行

! - 另一行

! a b c d

0 1 2 3

4 5 6 7

8 9 10 11

期望的输出:

a b c d

0 1 2 3

4 5 6 7

8 9 10 11

到目前为止,我得到了:

re.sub(r'(?m)^(?!.*a\sb\sc\sd)\#.*\n?', '', textstring)

您可以使用

re.sub(r'\A(?:!.*\n)+!\s*(.*a\sb\sc\sd)', r'', textstring)

参见 this regex demo详情:

  • \A - 字符串开头
  • (?:!.*\n)+ - 以 !
  • 开头的一行或多行
  • ! - 一个 !,
  • \s* - 零个或多个空格
  • (.*a\sb\sc\sd) - 第 1 组:除换行符之外的任何零个或多个字符尽可能多,a,空格,b,空格,c , 空格, d.

替换为第 1 组值,

(?:.*\n)+!([^!]*)

您可以在https://regex101.com/

中测试