加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 02:20:50 所属栏目:百科 来源:网络整理
导读:By default,pattern matching is greedy,which means that the matcher returns the longest match possible. For example,applying the pattern A.*c to AbcAbcA matches AbcAbc rather than the shorter Abc . To do nongreedy matching,a question mark m


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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读