Java正则表达式拥有量词

时间:2013-06-20 19:20:10

标签: java regex quantifiers

鉴于此正则表达式:

x[^x]*+x

和用于匹配的输入字符串:

xbbbx

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

但是,通过仅在正则表达式和字符串中将最后一个字母x更改为Z,我们得到此正则表达式:

x[^x]*+Z

和这个输入字符串:

xbbbZ

,结果是:找不到匹配项

为什么单个字母的更改会导致行为发生这种变化?

1 个答案:

答案 0 :(得分:3)

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

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

此正则表达式x[^x]*+xxbbbx一起使用,因为“占有”量词 在达到x时停止。您的输入最后有x,因此占有量词停止。这允许正则表达式x的最后一部分与x匹配。

在Java tutorial page的末尾,你可以看到另一个占有量词的例子。