如何在记事本++中删除一行中少于11个但多于8个数字的行。这些数字是用字母或空格等彼此分开的。
您的要求是删除具有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位数但不多于或少于此数的任何行。
^(?:\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