正则表达式问题

wtucel 2007-01-11 09:32:22
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是怎么匹配来的没看懂。
...全文
154 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wdman 2007-01-11
  • 打赏
  • 举报
回复
第一个为false是因为,a*b代表的String是 前面0到无数个a,然后后面一个b
b,ab,aab,aaab,...

第二个的依次置换过程是
abbababadbb
dbababadbb
ddababadbb
dddabadbb
ddddadbb
ddddaddb
ddddaddd

程序没有欺骗你,结果是对的。

liulang203 2007-01-11
  • 打赏
  • 举报
回复
注意在正则表达式中 "*"号的意思是 >= 0 个.也就是说他也可以匹配"b"
"abbababadbb" 匹配中应该是这样分的ab b ab ab ad b b 进行匹配的其中的"ad"没有匹配

而b=m.matches();则尝试进行全文匹配
Henry_Four 2007-01-11
  • 打赏
  • 举报
回复
刚才的中文应该打在最后 b = d 后面 ^_^
Henry_Four 2007-01-11
  • 打赏
  • 举报
回复
m=p.matcher("abbababadbb");
拆分:
abbababadbb
ab = d
b = d
ab = d
ab = d
a = a
d = d
b = d

注意你中间有个字串是 ad 是无法匹配的, 因为 b 是必须的.
b = d

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧