JAVA正则表达式替换问题

coolzyt 2007-11-27 10:19:39
用正则表达式解析xml
想把
<listenPort>8000</listenPort>
中间的数字(数字未知)替换成3000,搞了半天没搞出来

代码如下
String regex = "<listenPort>(.+)</listenPort>";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(xml);
while(m.find()){
xml = m.replaceAll("3000");
}
是把整个"<listenPort>(.+)</listenPort>";都替换了,请问如何对括号里的内容进行替换啊?
...全文
110 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
coolzyt 2007-11-27
  • 打赏
  • 举报
回复
总觉得不是很完美,还是相当于整句一起替换了,不能只替换里面部分吗
  • 打赏
  • 举报
回复
是这个意思吗?$1表示第一组(使用括号),$2表示第二组,依此类推。

public class Test {
public static void main(String[] args) {
String xml = "<listenPort>8000</listenPort>,<listenPort>2000</listenPort>";
String regex = "(<listenPort>)([0-9]+)(</listenPort>)";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(xml);
while(m.find()){
xml = m.replaceAll("$13000$3");
}
System.out.println(xml);
}
}
coolzyt 2007-11-27
  • 打赏
  • 举报
回复
楼上的方法不好,我现在主要想知道java正则表达式如何对组进行替换,而不是对整个字符串
iskyshop 2007-11-27
  • 打赏
  • 举报
回复
xml = m.replaceAll(" <listenPort>3000</listenPort> ");

62,616

社区成员

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

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