2017-03-06 192 views
0

我正在尋找一個正則表達式,將從一個巨大的文本文件/文件中排除下面的單詞。正則表達式不包含某些詞

@author 
@Autowired 
@Override 
@param 
@SuppressWarnings 

我已經嘗試過,但沒有按預期工作。

@[^(author)(Autowired)(Override)(param)(SuppressWarnings)].* 
+0

爲什麼標記爲'javascript'? – shmosel

+0

@Viswa shmosel有一個很好的觀點......要正確回答這個問題,我們確實需要知道你使用的是什麼語言。如果您正在編寫一個Node.js程序來處理Java源代碼,那麼您應該只有「javascript」標記。如果你正在編寫一個Java程序,你應該有「java」標籤。它有所不同,因爲有些語言支持正則表達式功能,而不是其他語言。 – ajb

回答

2

可以使用負前瞻:

@(?!author|Autowired|Override|param|SuppressWarnings)\S+ 

基本上,它尋找一個@而不是後跟該單詞列表,然後它匹配之後的任何非空白字符。

+0

非常感謝,感謝您的幫助。 – Viswa

1

要翻轉腳本,如果你實際上是試圖把文本文件和刪除事情是在你的關鍵字列表,你可能會想找到使用語法的更多類似這樣的:@(author|AutoWired|Override|param|SuppressWarnings)\b。終端\b只是避免@權限或其他不可能性的預防措施。

1

正則表達式中的方括號用於字符類。當您將方括號中的字符列表放入時,其中一個字符就是列出的字符之一。所以

[author] 

匹配一個字符,如果是ahort,或者u。它不尋找單詞author。在前面把^也尋找一個字符不在列表

[^author] 

一個字符,只要它不是ahort,或者u匹配。

但這裏關鍵的是[]不能用於匹配單詞或其他序列。在你的榜樣,

@[^(author)(Autowired)(Override)(param)(SuppressWarnings)].* 

方括號中的第一部分字符不能匹配(au,或任何出現在方括號(其中許多人物多次出現其他字符,但這不會影響任何東西)。