Grep 英雄正则表达式挑战

Grep 英雄正则表达式挑战,grep,Grep,我花了一下午的时间想弄明白,我想你们大概5分钟就知道答案了 我需要在这样的文件中列出字符串的出现情况 寻找(a-z,a-z,0-9,,-)中的(0到多个),然后是CHRIS或DAVE,然后是(a-z,a-z,0-9,,-)中的(0到多个) 对于这样的文件: eader>fooCHRISbar</header> madeup>DAVE123 more stuff after space more stuff hereCHRISDAVE</done> blah C

我花了一下午的时间想弄明白,我想你们大概5分钟就知道答案了

我需要在这样的文件中列出字符串的出现情况

寻找(a-z,a-z,0-9,,-)中的(0到多个),然后是CHRIS或DAVE,然后是(a-z,a-z,0-9,,-)中的(0到多个)

对于这样的文件:

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

…基本上,它是在查找CHRIS和DAVE的所有出现,包括周围的文本(一个字符、下划线或破折号,一直到<或空格或其他

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

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

如果圆点出现在
CHRIS
之前,则需要在第一个char类中添加
grep-oP'[\w.-]*(?:CHRIS | DAVE)[\w.-]*”文件
$ grep -oP '[\w-]*(?:CHRIS|DAVE)[\w.-]*' file
fooCHRISbar
DAVE123
hereCHRISDAVE
CHRIS.internet.com