Java正则表达式拥有量词

鉴于这个正则表达式:

x[^x]*+x

和这个匹配的输入字符串:

xbbbx

结果是匹配文本xbbbx从索引0开始到索引5结束。

但是,只需将正则表达式和字符串中的最后一个字母x更改为Z ,就可以得到这个正则表达式:

x[^x]*+Z

和这个输入字符串:

xbbbZ

结果是:未找到匹配项。

为什么单个字母的改变会产生这种行为变化?


你之所以使用“占有”量词来尽可能匹配符号。

因此,在这种情况下,使用xbbbZ ,正则表达式x[^x]*+匹配所有非x字符,直到行结束,停止。 它已经消耗了输入xbbbZ的“Z”。

此正则表达式, x[^x]*+x ,可与xbbbx因为“占有欲”数量已经停止,当它到达的x 。 你的输入结尾有一个x ,因此占有量词停止。 这允许正则表达式x的最后一部分与x匹配。

在Java教程页面的末尾,您可以看到占有量词的另一个例子。

链接地址: http://www.djcxy.com/p/76993.html

上一篇: Java regex possesive quantifiers

下一篇: length matches in Java Regex