我想太多的兄弟看过  Thinking  in  java  了吧!大家是不是看过  I/O  里面的正则表达式。  
我是实在理解不了正则表达式的  数量表示符    
 
Greedy    Reluctant    Possessive    匹配      
X?    X??    X?+    匹配一个或零个X      
X*    X*?    X*+    匹配零或多个X      
X+    X+?    X++    匹配一个或多个X      
X{n}    X{n}?    X{n}+    匹配正好n个X      
X{n,}    X{n,}?    X{n,}+    匹配至少n个X      
X{n,m}    X{n,m}?    X{n,m}+    匹配至少n个,至多m个X      
 
这个东西有什么用处那。我们在写的时候如果写一个问号    X?  ,那好,这表示。我要求X出现0或者1次。那么我写两个问号  X??  是什么意思那.难道也是“我要求X出现0或者1次”

解决方案 »

  1.   

    哈哈,刚学到
    X? 表示这个正则表达式是greedy的,再加一个?表示这个是reluctant的,加+号的话就表示是possessive的,下面是java turoials 里的例子
    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.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.Enter your regex: .*+foo // possessive quantifier
    Enter input string to search: xfooxxxxxxfoo
    No match found.第一个是greedy的,表示它的匹配过程是,先尝试把整个xfooxxxxxxfoo,匹配.*,显然成功,但是后面没有foo了,所以匹配.*成功,但是匹配.*foo不成功,于是它退一个字符,把xfooxxxxxxfo与.*匹配,当然成功,但是匹配.*foo又不成功,再退一个字符xfooxxxxxxf,把xfooxxxxxxf与.*匹配,当然成功,但是匹配.*foo又不成功,再退一个,这次成功了,至于为什么,自己想一想.它的过程就是从后往前退字符,所以只能匹配到一个xfooxxxxxxfoo第二个是reluctant的,表示它的匹配过程是,先尝试用空串匹配,匹配.*,显然成功,但是后面还有xfooxxxxxxfoo,不能匹配foo,所以不成功.于是,它加一个字符(和前面不同,前面是减一个,这是加一个),x匹配.*,显然成功,但是后面还有fooxxxxxxfoo,不能匹配foo,所以不成功.继续这个过程,可以找到两个匹配xfoo,xxxxxxfoo,自己分析一下这两个如何成功的第三个是possessive的,它和greedy一样,先把整个串吃了,但是不同的是,它不退字符了,也就是说,它只尝试一次,所以没找到任何匹配讲解完毕
      

  2.   

    ^_^   等了半天了
    等到了
    认真看中………………
    谢谢  XXKKFF(讠古 钅) 
      

  3.   

    是不是说X?  X??  X?+  的意思是完全一样的????
      

  4.   

    XXKKFF(讠古 钅)好劲呀,顶呀
      

  5.   

    {n}、{n}?、{n}+这三种符号代表了三种不同的字符串的搜索方式,但是它们的搜索结果是一样的这三个符号本身都是一个整体。我的意思是说
    a{n}?       不可以解释为(a{n})?      
    {n}? 这个符号就像是 1 个符号--比方说 *-- 一样,绝对不可以把它分割开来因为在正则表达式中 {n}? 表达的意思是:“我就是一个单独的,正则表达式中的,特殊符号,而且如果你用到我,那么你在匹配器中搜索时就要采用这种方式:从左向右搜索”