import java.util.regex.*;public class Sort {
public static void main(String[] args) {
Pattern p=null;
Matcher m=null;
boolean b;
String s=null;
p=Pattern.compile("a*b");
m=p.matcher("abbbbbbbb");
b=m.matches();
System.out.println(b);
p=Pattern.compile("a*b");
m=p.matcher("abbababadbb");
s=m.replaceAll("d");
System.out.println(s);
}
}
结果是b为false。s为ddddaddd。怎么来的??
a*b是不是只包含ab,aab,aaab,aaaab.....这些?
s是怎么匹配来的没看懂。
public static void main(String[] args) {
Pattern p=null;
Matcher m=null;
boolean b;
String s=null;
p=Pattern.compile("a*b");
m=p.matcher("abbbbbbbb");
b=m.matches();
System.out.println(b);
p=Pattern.compile("a*b");
m=p.matcher("abbababadbb");
s=m.replaceAll("d");
System.out.println(s);
}
}
结果是b为false。s为ddddaddd。怎么来的??
a*b是不是只包含ab,aab,aaab,aaaab.....这些?
s是怎么匹配来的没看懂。
拆分:
abbababadbb
ab = d
b = d
ab = d
ab = d
a = a
d = d
b = d注意你中间有个字串是 ad 是无法匹配的, 因为 b 是必须的.
b = d
"abbababadbb" 匹配中应该是这样分的ab b ab ab ad b b 进行匹配的其中的"ad"没有匹配而b=m.matches();则尝试进行全文匹配
b,ab,aab,aaab,...第二个的依次置换过程是
abbababadbb
dbababadbb
ddababadbb
dddabadbb
ddddadbb
ddddaddb
ddddaddd程序没有欺骗你,结果是对的。