Notepad ++替换包含6位数字和单词的行

时间:2018-07-24 02:27:08

标签: regex notepad++

所以我明白了:

123456asdsa
444444dfsdsdg
3443fsdfdsd
77gdsggfgf

而且我只希望删除任何包含6位数字的行,无论其字数如何,都可以这样:

3443fsdfdsd
77gdsggfgf

我唯一发现的是此正则表达式[0-9] {6},它使我只能选择6位数字但没有单词,所以我该怎么办? 谢谢

3 个答案:

答案 0 :(得分:0)

您可以使用

^(?=\w*\d{6})\S+\s

在该行中先行输入6位数字,然后用空字符串替换该行和以下换行符:

https://regex101.com/r/mz0vMY/2

答案 1 :(得分:0)

您可以使用:

^\D*\d{6}(?!\d).* #or ^\D*\d{6}(?=\D).*

在这种情况下,您将看到在数字之前是否有任何非数字。当您得到六个数字时,请确保下一个为非数字。即只选择6位数字的行。没有选择7位数或以上的数字或少于6位数的数字:

regex Demo

答案 2 :(得分:0)

您的要求不是很清楚,所以我给您几种选择,希望其中一种能满足您的需求。

如果要选择包含连续6位数字且没有其他数字的行,则可以使用

^\D*\d{6}\D*$

^                      start of line
 \D*                   some optional non-digit, 
    \d{6}              followed by 6 digits, 
         \D*           followed by some optional non-digit 
            $          till end of line

如果要选择包含6位数字的行(不必是连续的),则可以使用

^(\D*\d){6}\D*$


^                       start of line
 (\D*\d)                group of optional non-digit then 1 digit
        {6}             above group happening for 6 times 
                            (i.e. 6 digits in total)
           \D*$         follow by non-digits till end of line

如果您要选择包含完全由6位数字组成的行,则可以

^.*(\b|\D)\d{6}(\b|\D).*$

^.*                              start of line, followed by some chars
   (\b|\D)                       followed word boundary or non-digit
          \d{6}                  6 digits
               (\b|\D)           followed word boundary or non-digit
                      .*$        followed by some chars till end of line

更新:

使用@WiktorStribiżew的信息,Notepad ++可能以意外的方式处理\D,因为它可能与换行符匹配。您只需将上述正则表达式中的\D替换为[^0-9\n\r]即可获得首选行为。