2013-05-05 88 views
2

我是新来的正则表达式。我使用支持正则表达式的“Everything”搜索工具,我需要做一个简单的搜索。我需要在我的计算机上找到名称中带有TH =和DB =的文件(顺便提一下,它们不是常规名称,而是字符串),还有CH =的文件,但我需要排除具有EL =的文件。例如,我需要找到名为xyz = TH = DB =,CH = xyz =,DB = TH =等但不是TH = xyz =,xyz = DB =,EL = TH = DB =,CH = EL =等,谢谢您的帮助。A和B或C但不是D的正则表达式搜索字符串

+0

你有它的正则表达式功能的文档?如果它支持lookahead,你可以使用'^(?!。* EL =)((?=。* CH =)|(?=。* TH)(?=。* DB))''。如果它有效,我可以给你写一个完整的答案,解释实际发生的事情。 – 2013-05-05 23:47:10

回答

0

你可能想环视:

http://www.regular-expressions.info/lookaround.html

baiscally你可以找到这样的事情:

/(A|B)(?!C)/ 

,除非一方后跟你会得到一个匹配的一切或B C.

如果你的正则表达式引擎不支持零宽度断言,它会变得更难做这种事情。

+0

除非紧接着'C',否则它会查找'A'或'B'。如果'C'在所需部分之前(或者如果它在字符串中的任何位置,我支持),则匹配也应该被排除。同时,这并不涉及匹配的两个部分(只有当它们都发生时,'TH'和'DB',无论顺序如何)。 – 2013-05-05 23:58:06

+0

感谢您的回复。 m.buettner,字符串不起作用,并且关于此实用程序支持哪些正则表达式功能的信息很少。也许我会尝试他们的支持论坛 - 我不知道他们有一个。 – user2352949 2013-05-06 00:09:02

+0

@ user2352949没有lookarounds,特别是排除多字符模式(在​​你的情况下是'EL =')将是一个痛苦。 – 2013-05-06 00:17:50

相关问题