This time I will bring you a detailed explanation of the three modes of regularity (greedy, reluctant, and possessive), and Precautions for using the three modes of regularity (greedy, reluctant, and possessive) What are they? Here are actual cases. Let’s take a look.
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
abbUnlike Greediness, content is matched twice in Reluctant mode
Possessive (possessive): exact match
#Possessive mode has a certain similarity with Greediness, that is, it tries to match the largest range of content until the end of the content, but unlike Greediness, full matching no longer falls back and tries to match a smaller range ##. #
String test = "a<tr>aava </tr>abb "; String reg = "<.++>"; String test2 = "<tr>"; String reg2 = "<tr>"; System.out.println(test.replaceAll(reg, "###")); System.out.println(test2.replaceAll(reg2, "###"));
Recommended reading:
Detailed explanation of using regular expressions in Linux
Detailed explanation of using regular expressions
The above is the detailed content of Detailed explanation of the three modes of regularity (greedy, reluctant and possessive). For more information, please follow other related articles on the PHP Chinese website!