2014-08-28 64 views
-1

我花了整個下午試圖弄清楚這一點,我想你們可能在5分鐘內知道答案。英雄正則表達式挑戰

我需要在這樣的文件中列出字符串的出現次數。 (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 

..basically它尋找克里斯和DAVE出現的所有,包括周圍的文本(字符,下劃線或一路衝到<或空間或東西

回答

1

您需要在第二個字符類條件中添加.。因此,它將匹配字符串CHRIS.INTERNET.COM,

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

如果點出現在CHRIS之前,那麼您需要在第一個字符類中添加'.'。 'grep -oP'[\ w .-] *(?:CHRIS | DAVE)[\ w .-] *'file' – 2014-08-28 11:19:17

+0

謝謝 - 這正是我需要的! – 2014-08-28 12:59:07

+0

[然後接受此答案...](http://stackoverflow.com/help/accepted-answer) – 2014-08-28 13:00:21

相關問題