我正在寻找一个正则表达式,它将从大文本文件/文件中排除下面的单词。
@author
@Autowired
@Override
@param
@SuppressWarnings
我试过这个但是没有按预期工作。
@[^(author)(Autowired)(Override)(param)(SuppressWarnings)].*
答案 0 :(得分:3)
尝试使用以下正则表达式(使用negative look-ahead):
@(?!author|Autowired|Override|param|SuppressWarnings).*
答案 1 :(得分:2)
您可以使用否定前瞻:
@(?!author|Autowired|Override|param|SuppressWarnings)\S+
基本上,它会查找不的@
,后跟该字词列表,然后匹配任何非空格字符。
答案 2 :(得分:2)
正则表达式中的方括号用于字符类。当您在方括号中放置一个字符列表时,这会匹配一个字符,这是列出的字符之一。所以
[author]
匹配一个字符,如果它是a
,h
,o
,r
,t
或{{1 }}。它不会查找单词u
。将author
放在前面也会在列表中查找不是的一个字符:
^
匹配一个字符,只要它不是[^author]
,a
,h
,o
,r
或t
。
但关键是u
不能用于匹配单词或其他序列。在您的示例中,
[]
方括号中的部分匹配一个不是@[^(author)(Autowired)(Override)(param)(SuppressWarnings)].*
,(
,a
的字符,或方括号中出现的任何其他字符(其中许多字符出现多次,但这不会影响任何事情。)
答案 3 :(得分:1)
要翻转脚本,如果您实际上尝试获取文本文件并删除关键字列表中的内容,您可能希望找到使用的内容语法更像是这样:@(author|AutoWired|Override|param|SuppressWarnings)\b
。终端\b
只是避免@authority或其他不可能性的预防措施。