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

时间:2019-02-27 12:53:01

标签: regex notepad++ notepad

在记事本++中,如何删除一行中少于11个数字但多于8个数字的行。数字之间用字母或空格等分隔。

2 个答案:

答案 0 :(得分: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位数字,但不超过此位数的任何行。

答案 1 :(得分: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