Greediness (Greediness): Maximum matching
X?, X*, X+, X{n,} is the maximum matching. For example, if you want to use "<.+>" to match "a
In Greediness mode, it will try to match as wide a range as possible until the entire content is matched. At this time, when it is found that the match cannot be successful, it will start to shrink back a little. Matching range until successful match
String test = "a<tr>aava </tr>abb "; String reg = "<.+>"; System.out.println(test.replaceAll(reg, "###"));
Output: a
abb
Reluctant(Laziness) (reluctant): minimum match
String test = "a<tr>aava </tr>abb "; String reg = "<.+?>"; System.out.println(test.replaceAll(reg, "###"));
aava
abb
Different from Greediness, the content is matched twice in Reluctant mode
Possessive (possessive): exact match
X?+, X*+, X++, X{n,} + is a complete match. Add + after the Greediness pattern to become a complete match. Possessive pattern has a certain similarity with Greediness, that is, it tries to match the largest range of content until the end of the content, but it is different from Greediness. Yes, exact matching no longer falls back to trying to match a smaller range## Output: a
For more Java regular expression matching patterns (greedy, reluctant, possessive) related articles, please pay attention to the PHP Chinese website