求Java一个正则表达式替换。

scbb 2012-12-10 04:11:40
替换HTML里的值,换为另一个值。
比如
<a href="http://www.csdn.net">csdn</a>

想替换csdn为参赛队。那么期待结果是
<a href="http://www.csdn.net">参赛队</a>
而不是
<a href="http://www.参赛队.net">参赛队</a>


<和>之间的文字不被替换。
...全文
200 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
huntor 2012-12-10
  • 打赏
  • 举报
回复
为什么不使用jsoup呢
suciver 2012-12-10
  • 打赏
  • 举报
回复
引用 11 楼 suciver 的回复:
引用 9 楼 scbb 的回复: 引用 6 楼 suciver 的回复: Java code ? 12345678910 String s="<a href=\"http://www.csdn.net\">csdn is a good csdn!</a><a href=\"http://www.csdn.net\">csdn is a good csdn!</a><a h……
发现更简单的写法:

String s="<td href=\"http://www.csdn.net\">csdn is a good csdn!</td><div href=\"http://www.csdn.net\">csdn is a good csdn!</div><a href=\"http://www.csdn.net\">csdn is a good csdn!</a>"; 
        Pattern p=Pattern.compile("(\\<([a-zA-Z]+)\\s+?.*?\\>)(.*?)(?=\\<\\/\\2\\>)"); 
        Matcher m=p.matcher(s); 
        StringBuffer sb=new StringBuffer(); 
        while(m.find()){ 
            String str=m.group(3); 
            m.appendReplacement(sb, m.group(1)+str.replaceAll("csdn","参赛队");        
        } 
        m.appendTail(sb);
        System.out.println(sb);
suciver 2012-12-10
  • 打赏
  • 举报
回复
引用 9 楼 scbb 的回复:
引用 6 楼 suciver 的回复: Java code ? 12345678910 String s="<a href=\"http://www.csdn.net\">csdn is a good csdn!</a><a href=\"http://www.csdn.net\">csdn is a good csdn!</a><a href=\"http://www.c……

String s="<td href=\"http://www.csdn.net\">csdn is a good csdn!</td><div href=\"http://www.csdn.net\">csdn is a good csdn!</div><a href=\"http://www.csdn.net\">csdn is a good csdn!</a>";
		Pattern p=Pattern.compile("(\\<([a-zA-Z]+)\\s+?.*?\\>)(.*?)(?=\\<\\/\\2\\>)");
		Matcher m=p.matcher(s);
		StringBuffer sb=new StringBuffer();
		while(m.find()){
			String str=m.group(3);
			Pattern p1=Pattern.compile("csdn");
			Matcher m1=p1.matcher(str);
			StringBuffer sb1=new StringBuffer();
			while(m1.find()){
				m1.appendReplacement(sb1, "参赛队");
			}
			m.appendReplacement(sb, m.group(1)+sb1.toString());
		}
		System.out.println(sb);
  • 打赏
  • 举报
回复
感觉用正则不如在页面先获取超链接的值,再替换比较方便。
scbb 2012-12-10
  • 打赏
  • 举报
回复
引用 6 楼 suciver 的回复:
Java code ? 12345678910 String s="<a href=\"http://www.csdn.net\">csdn is a good csdn!</a><a href=\"http://www.csdn.net\">csdn is a good csdn!</a><a href=\"http://www.csdn.net\">csdn is a g……
<a ...我只是举个例子。 表达不够具体,对不起。 是任何html标签。只要关键字不在<>里就应该被替换。 比如有可能有<td>td</td>替换"td"为"提地" 结果应该是<td>提地</td>
faping_cao 2012-12-10
  • 打赏
  • 举报
回复
String s = "<a href=\"http://www.csdn.net\">csdn is a good csdn!</a>";
		String regex = "(<(\\S+).*?>)(.*?)(</\\2>)";
		Pattern p = Pattern.compile(regex);
		Matcher m = p.matcher(s);
		while (m.find()) {
			System.out.println(m.group(1)
					+ m.group(3).replaceAll("csdn", "参赛队") + m.group(4));
		}
scbb 2012-12-10
  • 打赏
  • 举报
回复
引用 5 楼 suciver 的回复:
Java code ? 12 replaceAll("(\\<a.*?\\>)(csdn)(?=\\<\\/a\\>)", "$1参赛队");
好像不对吧?
suciver 2012-12-10
  • 打赏
  • 举报
回复

String s="<a href=\"http://www.csdn.net\">csdn is a good csdn!</a><a href=\"http://www.csdn.net\">csdn is a good csdn!</a><a href=\"http://www.csdn.net\">csdn is a good csdn!</a>";
		Pattern p=Pattern.compile("(\\<a.*?\\>)(.*?)(?=\\<\\/a\\>)");
		Matcher m=p.matcher(s);
		StringBuffer sb=new StringBuffer();
		while(m.find()){
			String str=m.group(2);
			m.appendReplacement(sb, str.replaceAll("csdn", m.group(1)+"参赛队"));
		}
		System.out.println(sb);
suciver 2012-12-10
  • 打赏
  • 举报
回复

replaceAll("(\\<a.*?\\>)(csdn)(?=\\<\\/a\\>)", "$1参赛队");
scbb 2012-12-10
  • 打赏
  • 举报
回复
测试用例可能不够好。 比如 <a href="http://www.csdn.net">csdn is a good csdn!</a> 想替换csdn为参赛队。那么期待结果是 <a href="http://www.csdn.net">参赛队 is a good 参赛队!</a>
faping_cao 2012-12-10
  • 打赏
  • 举报
回复
s.replaceAll("(<(\\S+).*?>).*?(</\\2>)", "$1替换$3")
rocky225 2012-12-10
  • 打赏
  • 举报
回复
引用 1 楼 Inhibitory 的回复:
"<a href=\"http://www.csdn.net\">csdn</a>".replaceAll(">csdn<", "参赛队");
这是最简单的做法,但如果href会变,那应该如何做呢?
Inhibitory 2012-12-10
  • 打赏
  • 举报
回复
"<a href=\"http://www.csdn.net\">csdn</a>".replaceAll(">csdn<", "参赛队");

62,614

社区成员

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

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