gpt4 book ai didi

java - 无法使 Negative Lookahead 正则表达式正确匹配

转载 作者:行者123 更新时间:2023-12-01 23:28:38 24 4
gpt4 key购买 nike

我正在尝试匹配 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很好地解释了否定前瞻,但不幸的是它并没有帮助我找到正确的组合。

我是否遗漏了一些明显的东西?

最佳答案

您可以使用负向回顾:

Pattern p = new Pattern.compile( "^(.+)(?<!\\.jspx?)$" );

或者您可以使用否定前瞻:

Pattern p = new Pattern.compile( "^(?!.+?\\.jspx?$)(.+)$" );

关于java - 无法使 Negative Lookahead 正则表达式正确匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19643239/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com