0

我正在尝试匹配文本文件中的数字模式。

该文件可以包含诸如

12345 567890
90123 string word word 54616
98765

该模式应与包含不以 1234 开头的 5 位数字的任何行匹配

我试过使用((?!1234).*)[[:digit:]]{5},但它没有给出预期的结果。

编辑:该模式可以出现在行中的任何位置,并且应该仍然匹配

有什么建议么?

4

3 回答 3

4

如果该行不以 '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 的要求。我还是会把它留在这里,以防有人在这个页面上寻找类似的东西。

于 2013-06-19T06:21:12.233 回答
1

以下将起作用,\b用于匹配单词边界,例如字符串空格的开头:

\b(?!12345)\d{5}.*
于 2013-06-19T06:20:06.090 回答
0

试试这个,至少包含 5 个十进制数字,但不是 12345,后面使用负数

\d{5,}(?<!12345)
于 2013-06-19T06:32:12.180 回答