日期:2014-05-20  浏览次数:20656 次

还是正则表达式的问题
刚才发为自己明白了   做了一个实验发现自己还是不明白
import   java.util.regex.*;
class   shiyan
{

        public   static   void   main(String   args[])
        {
                String   s1= "wufangdong12489dna ";
               
                Pattern   pattern=Pattern.compile( "\\w+\\d+\\w+ ");
                Matcher   matcher=pattern.matcher(s1);
               
                while(matcher.find())
                {
                        System.out.println(matcher.group());
                }
        }
}


上面这些代码   为什么只会输出wufangdong12489dna?  

ufangdong12489dna   fangdong12489dna这样的难道就不符合这个表达式么?

还有我把( "\\w+\\d+\\w+ ");改成( "\\w+(\\d+)\\w+ ");     再把group()改成group(1)为啥只输出9?     别的数字呢?

各位老大们   请别回“看api”   我是看了才上来问滴   要是看懂了我就不上来问了。  
谢谢回答!

------解决方案--------------------
至于为什么输出9,是因为\\w匹配了前面几个数字,但是为了匹配整个正则式,9就留给\\d+去匹配了
"(\\w+)(\\d+)(\\w+) "输出group(1)/group(2)/group(3)看看结果