我正在尝试匹配在 Java 中没有 .jsp/.jspx 扩展名的字符串,并且在使用负前瞻模式时遇到了很多困难。
给定一堆字符串:
String string1 = "templateName";
String string2 = "some/path"
String string3 = "basic/filename/no/extension"
String string4 = "some/path/to/file.jsp"
String string5 = "alternative/path/to/file.jspx"
我试图找到一个匹配前 3 个而不是最后 2 个的正则表达式。
我原以为带有负前瞻的正则表达式会起作用。
前任:
Pattern p = new Pattern.compile( "(.+)(?!\\.jsp[x]?)")
但该模式似乎与上述所有字符串匹配。我最初认为第 1 组可能过于贪婪,所以我尝试了 (.+?),但这也无济于事。
这篇SO Post很好地解释了负面的前瞻性,但不幸的是它并没有帮助我找到正确的组合。
我错过了一些明显的东西吗?