Java 正则表达式贪婪匹配选择整行

Java 正则表达式贪婪匹配选择整行,java,regex,Java,Regex,对于Java应用程序,我有以下字符串:/a/b/first/one.js、/a/b/second/two.js、/a/b/third/three.html 我想选择最后一个路径(/a/b/third/three.html)并使用这个正则表达式:/a/b/(.*?)\.html,但它会选择整行 如何让regex停止匹配整行,只选择其中的一部分?对于这种情况,可以使用负前瞻模式: /a/b/(?:(?!/a/b/).)*\.html 注意(?:(?!/a/b/))*,它匹配下一个位置没有/a/b

对于Java应用程序,我有以下字符串:
/a/b/first/one.js、/a/b/second/two.js、/a/b/third/three.html

我想选择最后一个路径(
/a/b/third/three.html
)并使用这个正则表达式:
/a/b/(.*?)\.html
,但它会选择整行


如何让regex停止匹配整行,只选择其中的一部分?

对于这种情况,可以使用负前瞻模式:

/a/b/(?:(?!/a/b/).)*\.html


注意
(?:(?!/a/b/))*
,它匹配下一个位置没有
/a/b/
的任何字符中的0个或多个。对每个字符都声明此负前瞻。

您可以匹配非空白字符(或任何要求反的分隔符),而不是
,这样它就不会溢出到下一个字符中:

/a/b/(\S*)\.html

谢谢你的回复,这很有帮助。