Regex可查找包含一个单词但不包含另一个单词的文件

cwxwcias  于 2022-10-15  发布在  Eclipse
关注(0)|答案(3)|浏览(193)

社区在10天前审查了是否重新讨论这个问题,并将其关闭:
原始关闭原因未解决
我正在尝试快速查找包含一个术语但缺少另一个术语的所有.Java文件。我使用的是MyEclipse 10.7及其‘搜索|文件搜索’功能,它支持正则表达式。
正则表达式在这种情况下可以工作吗?正确的正则表达式是什么?

fzwojiic

fzwojiic1#

我能找到的唯一有效的解决方案是以下Regex:

  1. ^(?!.[\s\S]*MISSING_TERM).[\s\S]*INCLUDED_TERM.*$

它会查找包含INCLUDED_TERM但不包含MISSING_TERM的每个文件,而不考虑行。
关键字是sS,它确保搜索整个文件,而不是每行。

vc6uscn9

vc6uscn92#

如果您想在一行中找到它,可以这样使用它:

  1. ^(?!.*MISSING_TERM).*INCLUDED_TERM.*$

您还可以使用``作为转义字符,因为您可能需要它,就像class.variable一样。

gk7wooem

gk7wooem3#

您可以使用类似以下内容:

  1. (?<!.*bar)foo(?!.*bar)

如果找到了“foo”而没有找到“bar”,则将匹配。
注意:您必须配置您的搜索引擎使用多行正则表达式(例如:记事本++有一个选项称为“.匹配换行符”),因为通常点代表除*换行符以外的任何字符。

相关问题