我正在尝试匹配文本文件中的数字模式。
该文件可以包含
等值12345 567890
90123 string word word 54616
98765
该模式应匹配任何包含不以1234开头的5位数字的行
我尝试过使用((?!1234).*)[[:digit:]]{5}
但是没有达到预期效果。
编辑:模式可以出现在行中的任何位置,并且仍应匹配
有什么建议吗?
答案 0 :(得分: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的要求。我仍然会留在这里以防万一有人在这个页面上寻找类似的东西。
答案 1 :(得分:1)
以下方法可行,使用\b
匹配字词边界,例如字符串或空格的开头:
\b(?!12345)\d{5}.*
答案 2 :(得分:0)
试试这个,包含至少5个十进制数字,但不包含12345,使用负面看法
\d{5,}(?<!12345)