我正在尝试匹配文本文件中的数字模式。
该文件可以包含诸如
12345 567890
90123 string word word 54616
98765
该模式应与包含不以 1234 开头的 5 位数字的任何行匹配
我试过使用((?!1234).*)[[:digit:]]{5},但它没有给出预期的结果。
编辑:该模式可以出现在行中的任何位置,并且应该仍然匹配
有什么建议么?
我正在尝试匹配文本文件中的数字模式。
该文件可以包含诸如
12345 567890
90123 string word word 54616
98765
该模式应与包含不以 1234 开头的 5 位数字的任何行匹配
我试过使用((?!1234).*)[[:digit:]]{5},但它没有给出预期的结果。
编辑:该模式可以出现在行中的任何位置,并且应该仍然匹配
有什么建议么?
如果该行不以 '12345' 开头,则此正则表达式应适用于匹配包含至少 5 位数长的数字的行:
^((?!12345).*\d{5}.*)$
简短说明:
                              ^((?!12345).*\d{5}.*)$   _____________
                              ^ \_______/\/\___/\/ ^__|match the end|
 _____________________________|    |    _|   |   |__  |of the line  |
|match the start of a line|        |   |   __|____  |
     ______________________________|_  | |match ey| |
    |look ahead and make sure the    | | |exactly | |
    |line does not begin with "12345"| | |5 digits| |
                                    ___|_____       |
                                   |match any|______|
                                   |character|
                                   |sequence |
编辑:
似乎问题已被编辑,因此此解决方案不再反映 OP 的要求。我还是会把它留在这里,以防有人在这个页面上寻找类似的东西。
以下将起作用,\b用于匹配单词边界,例如字符串或空格的开头:
\b(?!12345)\d{5}.*
试试这个,至少包含 5 个十进制数字,但不是 12345,后面使用负数
\d{5,}(?<!12345)