正则表达式不包含某些单词

时间:2017-03-06 02:20:05

标签: javascript java regex

我正在寻找一个正则表达式,它将从大文本文件/文件中排除下面的单词。

@author
@Autowired
@Override
@param
@SuppressWarnings

我试过这个但是没有按预期工作。

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

4 个答案:

答案 0 :(得分:3)

尝试使用以下正则表达式(使用negative look-ahead

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

参见 regex demo / explanation

答案 1 :(得分:2)

您可以使用否定前瞻:

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

基本上,它会查找@,后跟该字词列表,然后匹配任何非空格字符。

答案 2 :(得分:2)

正则表达式中的方括号用于字符类。当您在方括号中放置一个字符列表时,这会匹配一个字符,这是列出的字符之一。所以

[author]

匹配一个字符,如果它是ahort或{{1 }}。它不会查找单词u。将author放在前面也会在列表中查找不是的一个字符:

^

匹配一个字符,只要它不是[^author] ahort

但关键是u不能用于匹配单词或其他序列。在您的示例中,

[]

方括号中的部分匹配一个不是@[^(author)(Autowired)(Override)(param)(SuppressWarnings)].* (a的字符,或方括号中出现的任何其他字符(其中许多字符出现多次,但这不会影响任何事情。)

答案 3 :(得分:1)

要翻转脚本,如果您实际上尝试获取文本文件并删除关键字列表中的内容,您可能希望找到使用的内容语法更像是这样:@(author|AutoWired|Override|param|SuppressWarnings)\b。终端\b只是避免@authority或其他不可能性的预防措施。