在记事本++中,如何删除一行中少于11个数字但多于8个数字的行。数字之间用字母或空格等分隔。
答案 0 :(得分:0)
您的要求说删除9位数或10位数的行,但不要多于或少于此位数。您可以尝试使用先行处理。在正则表达式模式下,尝试查找以下模式:
^(?!.*\d.*\d.*\d.*\d.*\d.*\d.*\d.*\d.*\d.*\d.*\d)(?=.*\d.*\d.*\d.*\d.*\d.*\d.*\d.*\d.*\d).*
然后只需将其替换为空字符串(什么也没有)。请按照下面的演示查看该模式正确标记了相应的行。
编辑:
这是您可以使用的另一种模式,无需先行,在眼睛上会更容易一些:
^\D*\d\D*\d\D*\d\D*\d\D*\d\D*\d\D*\d\D*\d\D*\d\D*\d?\D*$
这再次表示要匹配包含9或10位数字,但不超过此位数的任何行。
答案 1 :(得分:0)
^(?:\D*\d){8}(?:\D*\d){0,3}(?:\R|$)
LEAVE EMPTY
说明:
^ # beginning of line
(?:\D*\d){8} # non capture group, 0 or more NON digit and 1 digit, may appear 8 times
(?:\D*\d){0,3} # non capture group, 0 or more NON digit and 1 digit, may appear 0 upto 3 times
(?:\R|$) # non capture group, linebreak or end of file
给出:
1234567
12345678
123456789
1234567890
12345678901
123456789012
a1b2c3d4e5f6g7
a1b2c3d4e5f6g7h8
a1b2c3d4e5f6g7h8i9
a1b2c3d4e5f6g7h8i9j0k1l2
给定示例的结果
1234567
123456789012
a1b2c3d4e5f6g7
a1b2c3d4e5f6g7h8i9j0k1l2