求正则表达式

gqchen1981 2010-09-08 02:02:25
调用:
System.out.println(replace("aaa.bb[哈哈].ddd[bbbb].dddaad[cccc]eeeeeeee"));
函数:
public String replace(String s) {
List<String> list = new ArrayList<String>();
String pp = "\\[[^\\s]+\\]";
Pattern p = Pattern.compile(pp);
Matcher m = p.matcher(s);
int i = 0;
while(m.find()) {
s = m.replaceFirst("[" + i + "]");
i++;
m = p.matcher(s);
}
return s;
}
我想要的结果是:
输出aaa.bb[0].ddd[1].dddaad[2]eeeeeeee
并且想把"哈哈"、"bbbb"、"cccc"保存到list中,
但是结果不如人意
他一直对着:aaa.bb[0]循环,变死循环了
不明白String pp = "\\[[^\\s]+\\]";
这正则好象也没错吧?请教下大家.

好象这样写可以:
public String replace(String s) {
//这里不用正则字符
String pp = "ddd";
Pattern p = Pattern.compile(pp);
Matcher m = p.matcher(s);
int i = 0;
while(m.find()) {
s = m.replaceFirst("[" + i + "]");
m = p.matcher(s);
i++;
}
return s;
}
结果为aaa.bb[哈哈].[0][bbbb].[1]aad[cccc]eeeeeeee
不明白
...全文
54 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gqchen1981 2010-09-08
  • 打赏
  • 举报
回复
说错了,是问viszl

如果aaa.bb[bbbb].ddd[bbbb].dddaad[cccc]eeeeeeee
那结果为:aaa.bb[0].ddd[0].dddaad[2]eeeeeeee了,
或者aaa.bb[bbbb].ddd[0].dddaad[cccc]eeeeeeee
那结果为:aaa.bb[1].ddd[1].dddaad[2]eeeeeeee了,
gqchen1981 2010-09-08
  • 打赏
  • 举报
回复
再问下thegodofwar(thegodofwar),
如果aaa.bb[bbbb].ddd[bbbb].dddaad[cccc]eeeeeeee
那结果为:aaa.bb[0].ddd[0].dddaad[2]eeeeeeee了,
或者aaa.bb[bbbb].ddd[0].dddaad[cccc]eeeeeeee
那结果为:aaa.bb[1].ddd[1].dddaad[2]eeeeeeee了,
gqchen1981 2010-09-08
  • 打赏
  • 举报
回复
楼上正解,看来要花时间把正则好好学一下.谢谢!
loveofmylife 2010-09-08
  • 打赏
  • 举报
回复

String s="aaa.bb[哈哈].ddd[bbbb].dddaad[cccc]eeeeeeee";
String pp = "\\G[^\\[\\]]*(\\[[^\\s\\]]+\\])";
Pattern p = Pattern.compile(pp);
Matcher m = p.matcher(s);
int i = 0;
while(m.find()) {
s = s.replace(m.group(1),"[" + i + "]");
i++;
System.out.println(s);
}

thegodofwar 2010-09-08
  • 打赏
  • 举报
回复
好乱。。。
"\\[[^\\s]+\\]"不知道编译可以通过吗,[]里套着+和[],这种想法有问题, 一般把[]放在()里面....

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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