我有以下命令:
^((?!.*/gradle-wrapper\.jar$)|(.*\.jar$)|(.*\.exe$))和下列数据:
rupe-engine/src/main/groovy/com/rupe/engine/JongoAutoConfiguration.java
gradle/wrapper/gradle-wrapper.jar
gradle/wrapper/gradle-bundle.exe
gradle/wrapexe/gradle.git
testit.jar预期结果:
匹配gradle/wrapper/gradle-bundle.exe和testit.jar。
实际结果:
也匹配gradle/wrapper/gradle-wrapper.jar,尽管我试图“黑名单”这个文件名。
发布于 2017-05-09 16:16:35
您的正则表达式出现了“故障”,因为您使用了一个前瞻性分支作为替代分支,因此它不再限制模式。
您似乎希望匹配以.jar或.exe结尾而不以/gradle-wrapper.jar结尾的字符串。使用
^(?!.*/gradle-wrapper\.jar$).*\.(?:jar|exe)$详细信息
^ -字符串的开始(?!.*/gradle-wrapper\.jar$) -如果在任何0+字符(.*)之后都有/gradle-wrapper.jar子字符串,然后紧跟字符串的末尾($),则失败.*\. -匹配任何0+字符(行中断字符除外),直到最后一个.。(?:jar|exe) - jar或exe$ -字符串的末端。https://stackoverflow.com/questions/43874787
复制相似问题