英雄正则表达挑战

时间:2014-08-28 11:08:19

标签: grep

我花了整整一个下午试图解决这个问题,我想你们可能会在5分钟内知道答案。

我需要在这样的文件中列出字符串的出现次数。

寻找(0到多数)(az,AZ,0-9,_, - ),然后是CHRIS或DAVE,然后是(0到很多)(az,AZ,0-9,_, - )

所以对于这样的文件:

eader>fooCHRISbar</header>
madeup>DAVE123 more stuff after space
more stuff hereCHRISDAVE</done>
blah CHRIS.internet.com</done>

将返回

fooCHRISbar
DAVE123
hereCHRISDAVE
CHRIS.internet.com

..基本上它正在寻找所有出现的CHRIS和DAVE,包括周围的文字(一个字符,下划线或短划线一直到&lt;或空格或其他东西

1 个答案:

答案 0 :(得分:1)

您需要在第二个字符类条件中添加.。这样它就匹配字符串CHRIS.INTERNET.COM

$ grep -oP '[\w-]*(?:CHRIS|DAVE)[\w.-]*' file
fooCHRISbar
DAVE123
hereCHRISDAVE
CHRIS.internet.com