正则表达式删除以特定符号开头的所有行等等
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)+!([^!]*)
中测试
我想使用正则表达式删除所有以 '!' 开头的行,除了最后一行以该字符开头的行。此外,应删除所有空行。
!第 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)+!([^!]*)