正则表达式的贪婪匹配和非贪婪匹配

前端之家收集整理的这篇文章主要介绍了正则表达式的贪婪匹配和非贪婪匹配前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。


By default,pattern matching is greedy,which means that the matcher returns the longest match possible. For example,applying the patternA.*ctoAbcAbcAmatchesAbcAbcrather than the shorterAbc. To do nongreedy matching,a question mark must be added to the quantifier. For example,the patternA.*?cwill find the shortest match possible.


    // Greedy quantifiers
    String match = find("A.*c","AbcAbc");  // AbcAbc
    match = find("A.+","AbcAbc");          // AbcAbc
    
    // Nongreedy quantifiers
    match = find("A.*?c","AbcAbc");        // Abc
    match = find("A.+?","AbcAbc");         // Abc
    
    // Returns the first substring in input that matches the pattern.
    // Returns null if no match found.
    public static String find(String patternStr,CharSequence input) {
        Pattern pattern = Pattern.compile(patternStr);
        Matcher matcher = pattern.matcher(input);
        if (matcher.find()) {
            return matcher.group();
        }
        return null;
    }



注:本文转载自:http://www.zsm8.com/book/java_Exa/java.util.regex/Greedy.html

猜你在找的正则表达式相关文章