10

In java, what's the difference between "\\d+" and "\\d++"? I know ++ is a possessive quantifier, but what's the difference in matching the numeric string? What string can match "\\d+" but can't with "\\d++"? Possessive quantifier seems to be significant with quantifier ".*" only. Is it true?

Pshemo
  • 122,468
  • 25
  • 185
  • 269
user2313900
  • 201
  • 1
  • 3
  • 8

2 Answers2

12

Possessive quantifiers will not back off, even if some backing off is required for the overall match.

So, for example, the regex \d++0 can never match any input, because \d++ will match all digits, including the 0 needed to match the last symbol of the regex.

erickson
  • 265,237
  • 58
  • 395
  • 493
3

\d+ Means:
\d means a digit (Character in the range 0-9), and + means 1 or more times. So, \d+ is 1 or more digits.

\d++ Means from Quantifiers

This is called the possessive quantifiers and they always eat the entire input string, trying once (and only once) for a match. Unlike the greedy quantifiers, possessive quantifiers never back off, even if doing so would allow the overall match to succeed.

Sumit Singh
  • 15,743
  • 6
  • 59
  • 89