繁体   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