如何在记事本++中删除一行中少于11个但多于8个数字的行

问题描述 投票:0回答:2

如何在记事本++中删除一行中少于11个但多于8个数字的行。这些数字是用字母或空格等彼此分开的。

regex notepad++ notepad
2个回答
0
投票

您的要求是删除具有9或10位数但不多于或少于此数字的行。您可以尝试使用前瞻来处理这个问题。在正则表达式模式下,尝试查找以下模式:

^(?!.*\d.*\d.*\d.*\d.*\d.*\d.*\d.*\d.*\d.*\d.*\d)(?=.*\d.*\d.*\d.*\d.*\d.*\d.*\d.*\d.*\d).*

然后用空字符串替换它(没有)。按照下面的演示,看模式是否正确标记了相应的行。

Demo

编辑:

这是你可以使用的另一种模式,没有前瞻,这在眼睛上更容易:

^\D*\d\D*\d\D*\d\D*\d\D*\d\D*\d\D*\d\D*\d\D*\d\D*\d?\D*$

这再次表示匹配包含9或10位数但不多于或少于此数的任何行。


0
投票
  • 按Ctrl + H
  • 找到什么:^(?:\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

屏幕截图:enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.