请教一个 Regex 的写法

lrmymycn 2009-09-18 12:04:12
1. <a href="something.html">something</a>
2. <a href="http://www.domain.com/something.html">something</a>

一段代码里有这2种链接,现在我要把第一种找出来,然后加上http变成第2种,请问怎么写?

谢谢
...全文
100 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lrmymycn 2009-09-18
  • 打赏
  • 举报
回复
public class StringReplace {
public static void main(String[] args) {
String EMPTY_HREF = "href=\"([^(http)].*)\"";
String FLL_HREF = "href=\"http://www.domain.com/$1\"";

String text = "<a href=\"something.html\">something</a><a href=\"https://www.domain.com/something.html\">something</a>";
text = text.replaceAll(EMPTY_HREF, FLL_HREF);
System.out.println(text);
}
}

自己写出来了,不过还是感谢大家
bigbug9002 2009-09-18
  • 打赏
  • 举报
回复
F:\java>java Test
<a href="http://www.something.html">something</a>
<a href="http://www.domain.com/something.html">something </a>
<a href="ftp://www.domain.com/something.html">something </a>
<a href="http://www.something.html">something</a>
bigbug9002 2009-09-18
  • 打赏
  • 举报
回复
不太对,改为:
public static void main(String args[])  throws Exception{
//String str="12×(-3+12)-9/-2";
//System.out.println(Arrays.toString(str.split("(?=[+×/()-])|((?<=[+×/()-])(?<![+×/(-]{2}))")));
String regex="(<a[^>]*href=\")(?!\\w+://)(www\\.)*";
String str="<a href=\"something.html\">something</a> \n"
+"<a href=\"http://www.domain.com/something.html\">something </a>\n"
+"<a href=\"ftp://www.domain.com/something.html\">something </a>\n"
+"<a href=\"www.something.html\">something</a>";
String result = str.replaceAll(regex,"$1http://www.");
System.out.println(result);
}
bigbug9002 2009-09-18
  • 打赏
  • 举报
回复
public class Test{
public static void main(String args[]) throws Exception{

String regex="(<a[^>]*href=\")(?!\\w+://)(www)*";
String str="<a href=\"something.html\">something</a> \n"
+"<a href=\"http://www.domain.com/something.html\">something </a>\n"
+"<a href=\"ftp://www.domain.com/something.html\">something </a>\n"
+"<a href=\"www.something.html\">something</a>";
String result = str.replaceAll(regex,"$1http://www");
System.out.println(result);
}
}


结果:
F:\java>java Test
<a href="http://wwwsomething.html">something</a>
<a href="http://www.domain.com/something.html">something </a>
<a href="ftp://www.domain.com/something.html">something </a>
<a href="http://www.something.html">something</a>
yanliang_xt 2009-09-18
  • 打赏
  • 举报
回复

import java.util.regex.*;
//<a href="something.html">something </a>
//<a href="http://www.domain.com/something.html">something </a>

public class Test66
{
public static void main(String... args) {
StringBuilder sb = new StringBuilder();
sb.append("<a href=\"http://www.domain.com/");
String str = "<a href=\"something.html\">something </a>";
Matcher m = Pattern.compile("<a href=\"(.*?)\">(.*?)</a>").matcher(str);
while(m.find()) {
sb.append(m.group(1));
sb.append(">");
sb.append(m.group(2));
sb.append("</a>");
}
System.out.println(sb.toString());
}
}
qinqinxiatiao 2009-09-18
  • 打赏
  • 举报
回复
获取<a href....></a>的正则表达式
regex = "<a[^>]*href=(\"([^\"]*)\"|\'([^\']*)\'|([^\\s>]*))[^>]*>(.*?)</a>";

可以先获取所有连接,再用replaceAll替换成你的需要的。 或者先替换在用正则表达式取链接。
haojia0716 2009-09-18
  • 打赏
  • 举报
回复
直接这样就可以了吧

String s1 = "<a href=\"something.html\">something </a>";
String s2 = s1.replaceAll("href=\"", "href=\"http://www.domain.com/");
System.out.println(s2);
水中影子 2009-09-18
  • 打赏
  • 举报
回复
不好找哦,帮你顶下,
给你个思路,在路径后加个参数分辨一下就容易多了
qinqinxiatiao 2009-09-18
  • 打赏
  • 举报
回复
String regex="<a href=";

String str="<a href=\"something.html\">something </a> "

String finalStr = str.replaceAll(regex,"<a href=\"http://www.domain.com/")

sysout(finalStr)

62,621

社区成员

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

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