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