论坛首页 Java企业应用论坛

Pattern Greedy, Reluctant, and Possessive 扫盲

浏览 2568 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-06-12  
原文是 http://java.sun.com/docs/books/tutorial/essential/regex/quant.html

有时候感慨到底java人有多少看过了tutorial

Greedy, Reluctant, and Possessive

input string xfooxxxxxxfoo.

    
    Enter your regex: .*foo  // greedy quantifier
    Enter input string to search: xfooxxxxxxfoo
    I found the text "xfooxxxxxxfoo" starting at index 0 and ending at index 13.

Greedy 其实是整个字符串开始匹配,然后慢慢的backs off,这样就能得到最大匹配串
(backs off的行为到底是怎么样的我没有研究)


    Enter your regex: .*?foo  // reluctant quantifier
    Enter input string to search: xfooxxxxxxfoo
    I found the text "xfoo" starting at index 0 and ending at index 4.
    I found the text "xxxxxxfoo" starting at index 4 and ending at index 13.

reluctant 是从字符串的最开始开始匹配,慢慢的增加,所以匹配到的是最小字串


    Enter your regex: .*+foo // possessive quantifier
    Enter input string to search: xfooxxxxxxfoo
    No match found.

possessive 是greeedy + no backs off,相当于整个字符串都塞进来看,结果.*就匹配了所有串,foo没有匹配到,所有就no match found

最后推荐一下 pattern 工具,这个工具的tutorial也很不错
http://www.regular-expressions.info/tutorial.html
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics