在java中,"\\d+"
和"\\d++"
之间有什么区别?
我知道++是一个占有量词,但匹配数字串的区别是什么?
哪个字符串可以与"\\d+"
匹配,但不能与"\\d++"
匹配?
占有量词似乎只有量词".*"
才有意义。这是真的吗?
答案 0 :(得分:10)
即使整体比赛需要一些后退,占有量词也不会退缩。
因此,例如,正则表达式\d++0
永远不会匹配任何输入,因为\d++
将匹配所有数字,包括匹配正则表达式的最后一个符号所需的0
。
答案 1 :(得分:1)
\ d +表示:
\d
表示数字(0-9范围内的字符),+
表示1次或更多次。因此,\d+
是1位或更多位数。
\ d ++意味着
这称为占有量词,它们总是吃整个输入字符串,尝试一次(并且只有一次)匹配。与贪婪的量词不同,占有量词永远不会退缩,即使这样做也会使整体匹配成功。