我正在寻找一个正则表达式,将从一个巨大的文本文件/文件中排除下面的单词。正则表达式不包含某些词
@author
@Autowired
@Override
@param
@SuppressWarnings
我已经尝试过,但没有按预期工作。
@[^(author)(Autowired)(Override)(param)(SuppressWarnings)].*
我正在寻找一个正则表达式,将从一个巨大的文本文件/文件中排除下面的单词。正则表达式不包含某些词
@author
@Autowired
@Override
@param
@SuppressWarnings
我已经尝试过,但没有按预期工作。
@[^(author)(Autowired)(Override)(param)(SuppressWarnings)].*
尝试使用以下正则表达式(使用negative look-ahead):
@(?!author|Autowired|Override|param|SuppressWarnings).*
暹罗:非常感谢,感谢您的帮助。 – Viswa
可以使用负前瞻:
@(?!author|Autowired|Override|param|SuppressWarnings)\S+
基本上,它寻找一个@
即而不是后跟该单词列表,然后它匹配之后的任何非空白字符。
非常感谢,感谢您的帮助。 – Viswa
要翻转脚本,如果你实际上是试图把文本文件和删除事情是在你的关键字列表,你可能会想找到使用语法的更多类似这样的:@(author|AutoWired|Override|param|SuppressWarnings)\b
。终端\b
只是避免@权限或其他不可能性的预防措施。
正则表达式中的方括号用于字符类。当您将方括号中的字符列表放入时,其中一个字符就是列出的字符之一。所以
[author]
匹配一个字符,如果是a
,h
,o
,r
,t
,或者u
。它不寻找单词author
。在前面把^
也寻找一个字符不在列表:
[^author]
一个字符,只要它不是a
,h
,o
,r
,t
,或者u
匹配。
但这里关键的是[]
不能用于匹配单词或其他序列。在你的榜样,
@[^(author)(Autowired)(Override)(param)(SuppressWarnings)].*
方括号中的第一部分字符不能匹配(
,a
,u
,或任何出现在方括号(其中许多人物多次出现其他字符,但这不会影响任何东西)。
为什么标记为'javascript'? – shmosel
@Viswa shmosel有一个很好的观点......要正确回答这个问题,我们确实需要知道你使用的是什么语言。如果您正在编写一个Node.js程序来处理Java源代码,那么您应该只有“javascript”标记。如果你正在编写一个Java程序,你应该有“java”标签。它有所不同,因为有些语言支持正则表达式功能,而不是其他语言。 – ajb