[英]Regex does not contain certain words
我正在尋找一個正則表達式,該表達式將從巨大的文本文件中排除以下單詞。
@author
@Autowired
@Override
@param
@SuppressWarnings
我已經嘗試過了,但是沒有按預期工作。
@[^(author)(Autowired)(Override)(param)(SuppressWarnings)].*
您可以使用否定的前瞻:
@(?!author|Autowired|Override|param|SuppressWarnings)\S+
基本上,它會尋找一個@
,后面沒有該單詞列表,然后與之匹配的所有非空白字符。
正則表達式中的方括號用於字符類。 當您將一個字符列表放在方括號中時,它將匹配一個字符 ,該字符是列出的字符之一。 所以
[author]
匹配一個字符(如果是a
, h
, o
, r
, t
或u
。 它不查找author
一詞。 將^
放在前面也會查找不在列表中的一個字符:
[^author]
匹配一個字符,只要它不是a
, h
, o
, r
, t
或u
。
但是這里的關鍵是[]
不能用於匹配單詞或其他序列。 在您的示例中
@[^(author)(Autowired)(Override)(param)(SuppressWarnings)].*
方括號中的部分與一個不是(
, a
, u
或其他任何出現在方括號中的字符)匹配(這些字符中的許多字符出現多次,但這並不影響任何字符)。
要翻轉腳本,如果您實際上是在嘗試獲取文本文件並刪除關鍵字列表中的內容,則可能需要使用以下語法查找它們: @(author|AutoWired|Override|param|SuppressWarnings)\\b
。 終端\\b
只是為了避免@authority或其他不太可能的預防措施。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.