簡體   English   中英

正則表達式不包含某些單詞

[英]Regex does not contain certain words

我正在尋找一個正則表達式,該表達式將從巨大的文本文件中排除以下單詞。

@author
@Autowired
@Override
@param
@SuppressWarnings

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

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

嘗試使用以下正則表達式(使用負數預

@(?!author|Autowired|Override|param|SuppressWarnings).*

參見正則表達式演示/說明

您可以使用否定的前瞻:

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

基本上,它會尋找一個@ ,后面沒有該單詞列表,然后與之匹配的所有非空白字符。

正則表達式中的方括號用於字符類。 當您將一個字符列表放在方括號中時,它將匹配一個字符 ,該字符是列出的字符之一。 所以

[author]

匹配一個字符(如果是ahortu 它不查找author一詞。 ^放在前面也會查找不在列表中的一個字符:

[^author]

匹配一個字符,只要它不是ahortu

但是這里的關鍵是[]不能用於匹配單詞或其他序列。 在您的示例中

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

方括號中的部分與一個不是(au或其他任何出現在方括號中的字符)匹配(這些字符中的許多字符出現多次,但這並不影響任何字符)。

要翻轉腳本,如果您實際上是在嘗試獲取文本文件並刪除關鍵字列表中的內容,則可能需要使用以下語法查找它們: @(author|AutoWired|Override|param|SuppressWarnings)\\b 終端\\b只是為了避免@authority或其他不太可能的預防措施。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM