我正在尝试匹配文本文件中的数字模式。
该文件可以包含诸如
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)