使用grep查找字符串模式

djq*_*djq 2 regex grep

我正在尝试在几个.txt文件的文本中找到特定的顺序。我正在寻找连接到4位数字的字符串。例如Watson1990。我使用在线测试仪测试了正则表达式,它似乎可以正常工作,但是该表达式(或其组合)未能在我的文件中产生输出。

我的正则表达式如下:

egrep '\w*\d{4}' *.txt
Run Code Online (Sandbox Code Playgroud)

但是,它不会产生任何输出。你能告诉我这是怎么了吗?我正在使用OSX(雪豹)。

谢谢。

Mar*_*ers 5

您的正则表达式不起作用的原因是,在扩展的正则表达式语法中,令牌\d与字母d而不是数字匹配。请改用角色类[0-9]

同时\w匹配数字和字母,因此您可能不想在这里使用它。使用字符类[A-Za-z]来匹配AZ或az中的字母。

我将其更改*为a,+因为大概您希望在数字之前至少包含一个字母。的+意思是“一个或多个”,而*指“零个或多个”。

最后,您可能希望考虑如果看到5位数字会发生什么情况。您的正则表达式当前接受它,因为5位数字以4位数字开头。

最后,请尝试以下操作:

egrep '[a-zA-Z]+[0-9]{4}' *.txt
Run Code Online (Sandbox Code Playgroud)