正则表达式返回与选择不匹配的结果

时间:2016-11-22 19:08:39

标签: java regex perl

我处理的产品提供了一个Java API来扩展它。

API提供了一个功能 采用Perl正则表达式和 返回匹配文件列表。

我想过滤列表,删除所有以.xml.xsl.cfg结尾的文件;基本上与.*(\.xml|\.xsl|\.cfg)相反。

我一直在寻找,但我还没有得到任何工作。

我尝试了.*(?!\.cfg)^((?!cfg).)*$以及\.(?!cfg$|?!xml$|?!xsl$)

我不知道我是否走在正确的轨道上。

注意

我知道正则表达式系统是相似的,但我也无法使用Java正则表达式。

2 个答案:

答案 0 :(得分:1)

您可以使用

^(?!.*\.(x[ms]l|cfg)$).+

请参阅regex demo

<强>详情:

  • ^ - 字符串的开头
  • (?!.*\.(x[ms]l|cfg)$) - 如果除了换行符(.*)之外的任何0 +字符后跟xmlxsl或{{ 1}}(cfg)位于字符串末尾((x[ms]l|cfg)
  • $ - 除了换行符之外的任何一个或多个字符。如果不需要整个字符串匹配,可能会被省略(虽然在某些工具中是必需的)。

答案 1 :(得分:0)

你需要这样的东西,只有当字符串的末尾没有点和三个不需要的类型之一时才匹配

/(?<!\.(?:xml|xsl|cfg))\z/