import java.util.regex.*;
class Regex2}{
public static void main(String[] args){
     Pattern p = Pattern.compile(args[0]);
     Matcher m = p.matchar(args[1]);
     boolean b = false;
     while(b = m.find()){
             System.out.print(m.start()+m.group());
}}
}java Regex2  "\d*" ab34efwhat is the result?
A.234
B.334
C.2334
D.0123456
E.01234456
F.12334567
G.Compulation fails
           
为什么选择E啊 

解决方案 »

  1.   

    import java.util.regex.*;class NewClass {    public static void main(String[] args) {
            Pattern p = Pattern.compile(args[0]);
            Matcher m = p.matcher(args[1]);
            boolean b = false;
            while (b = m.find()) {
                //这样输出让你看的明确一些
                //每次find呢,m.start会输出匹配序列的开头。那么为什么开头分别是0,1,2,4,5,6呢
                //因为你的正则表达式是\d*,关键在*,可以是空序列的
                System.out.println("start:"+m.start()+"  group:"+(m.group().equals("")?"空":m.group()));
            }
        }
    }