Java利用正则表达式匹配URL链接,并替换成指定格式

package com.yls;

import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class TestUrl {
public static void main(String[] args) {
// 截取网页中的链接中的TITLE和URL,且URL必须以HTTP或HTTPS开头
//String s = "<div><a href='http://www.baidu.com' title='tip'>aaa</a><a href='https://www.baidu.com?param=1' title='baiduSearch'>bbb</a><span><a href='file:///d:/test/Arr.txt'>ccc</a></span></div>";
//String s = "撒的发生的手动阀http://www.baidu.com阿斯顿发送到";
//String s = "开始大发送到https://www.cnblogs.com/akiradunn/p/5855073.html大发送到http://www.tngou.net/blog/show/496大发送到结束http://www.baidu.com/daf";
String s = "博客地址:http://blog.csdn.net/u013456370页面初始化赋值:http://blog.csdn.net/u013456370/article/details/68067469";
//String mode = "<a\\s*href=(?='?http|https)([^>]*)title=([^>]*)>(.*?)</a>";
//String mode = "https?://\\w+\\.\\w+\\.\\w+";
//String mode = "[a-zA-z]+://[^\\s]*+[a-zA-z]";
String mode = "(http[s]?:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-./?%&*=]*))";
Pattern p = Pattern.compile(mode);
Matcher m = p.matcher(s);
String s1 = "";
int i = 0;
while (m.find()) {
System.out.println("find...");
String url = m.group();
//<a href="https://www.baidu.com"  target="_blank">百度</a>
if(i>0) {
s1 = s1.replaceAll(url,"<a href=\'" + url +"\'" + " target=\'_blank\'>" + url + "</a>");
System.out.println(i);
}else {
s1 = s.replaceAll(url,"<a href=\'" + url +"\'" + " target=\'_blank\'>" + url + "</a>");
}
i++;
System.out.println("src:" + url);
System.out.println(s1);
}
//System.out.println("最后替换的:" + s1);
}
}

输出结果如下:

find...

src:http://blog.csdn.net/u013456370
博客地址:<a href='http://blog.csdn.net/u013456370' target='_blank'>http://blog.csdn.net/u013456370</a>页面初始化赋值:<a href='http://blog.csdn.net/u013456370' target='_blank'>http://blog.csdn.net/u013456370</a>/article/details/68067469
find...
1
src:http://blog.csdn.net/u013456370/article/details/68067469
博客地址:<a href='http://blog.csdn.net/u013456370' target='_blank'>http://blog.csdn.net/u013456370</a>页面初始化赋值:<a href='http://blog.csdn.net/u013456370' target='_blank'>http://blog.csdn.net/u013456370</a>/article/details/68067469
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值