Regex 需要匹配但从列表中排除
Regex 需要匹配但从列表中排除,regex,regex-negation,regex-lookarounds,Regex,Regex Negation,Regex Lookarounds,(AEF01?/.* AEF01/AL020/na/na/na 及 但不是 ANB00/FF030/na/na/na 但我希望它反过来-我希望它看第一列,忽略任何AEF01代码,但选择该列中的任何其他内容,也看第二列,忽略FC070,但选择其他内容AEF01和FC070可能并不总是同时出现 我试过[^]和(?!)和(?)都没有用。 我很想解决这个问题,因为我的项目在没有这个表达式的情况下停止了。我建议您使用正则表达式模式 ((?<=^)(?!AEF01)[A-Z0-9]{5}(?=\/
(AEF01?/.*
AEF01/AL020/na/na/na
及
但不是
ANB00/FF030/na/na/na
但我希望它反过来-我希望它看第一列,忽略任何AEF01
代码,但选择该列中的任何其他内容,也看第二列,忽略FC070
,但选择其他内容AEF01
和FC070
可能并不总是同时出现
我试过[^]
和(?!)
和(?)都没有用。
我很想解决这个问题,因为我的项目在没有这个表达式的情况下停止了。我建议您使用正则表达式模式
((?<=^)(?!AEF01)[A-Z0-9]{5}(?=\/)|(?<=^[A-Z0-9]{5}\/)(?!FC070)[A-Z0-9]{5}(?=\/|$))
((?较短的方式:
^(?!AEF01/)\w+/(?!FC070/)\w+/.*$
如果需要排除下划线,则需要将\w
更改为[A-Z0-9]
在使用正则表达式语法的Sublime Text 2中测试,你能再澄清一点吗?^
和(?@m.buettner-没什么,只是美:)这样的两个部分(..|…)
模式使用相同的逻辑,因为它们有lookbehind和lookahead。但我认为您匹配了错误的位。正如我读到的,他希望匹配所有行,但在带有AEF01
和FC070
的行中,他希望删除这些列。这必须通过捕获组和/或替换来完成;)。
^(?!AEF01/)\w+/(?!FC070/)\w+/.*$