我想要一个正则表达式来匹配所有内容,但在一个更广泛的表达式中有几个特定的选项。(foo | bar | baz)相反
下面的例子将匹配test_foo.pl或test_bar.pl或test_baz.pl:
/test_(foo|bar|baz)\.pl/
但我想正好相反:
match test_.*\.pl except for where .* = (foo|bar|baz)
我有点有限在我的选项中,因为这不是直接进入Perl程序,而是cloc, a program that counts lines of code (that happens to be written in perl)的参数。所以我正在寻找一个可以在一个正则表达式中完成的答案,而不是多个链接在一起。
按秒打我。 +1 –
我认为你的soution会拒绝'test_bart.pl',但正如我所理解的那样,OP将接受'test_bart.pl',而不是'test_bar.pl'(只是一个例子,注意与'bart'相关的特殊情况) ) – ArtM
为了使这个仅*排除条件,你需要匹配表达式的结尾:'/ test _(?!(foo | bar | baz)\。pl)。* \。pl /'。 (如果字符串包含多个文件名(由于'。*'),这个版本也不正确,但在问题的上下文中不应该这样)。 – porges