Java利用正则表达式匹配URL链接,并替换成指定格式
2017-04-07 16:30
811 查看
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
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
相关文章推荐
- JS、replace利用正则表达式替换SQL所有参数为指定格式的数据
- php正则表达式替换URL链接地址为指定url的形式
- php正则表达式替换URL链接地址为指定url的形式
- JS、replace利用正则表达式替换SQL所有参数为指定格式的数据
- 利用java正则表达式来解析并获取指定的字符串
- java用正则表达式匹配或替换反斜杠(\)的问题
- C#正则表达式只替换指定第几次匹配…
- [导入]2006-5-7 ASP VBSCRIPT 正则表达式之 替换 URL 与 EMAIL 地址为热链接 By Stabx
- 匹配参数JS、replace 利用正则表达式 ,一次性替换SQL所有参数为数据
- Java基础---Java---正则表达式-----匹配、切割、替换、获取等方法
- java正则表达式来替换文本中匹配正则的内容
- Java正则表达式匹配、替换HTML内容
- java利用正则表达式判断输入的日期格式为yyyy/MM/dd
- 黑马程序员——JAVA基础---正则表达式---概述,匹配、切割、替换、提取,网页爬虫
- AS3关于使用正则表达式检测、匹配、替换文本中的url的方法
- Java正则表达式的多行匹配实战-将java文件中的单行和多行注释内容替换为空
- JAVA 正则表达式(匹配、切割、替换)
- JAVA正则表达式匹配,替换,查找,切割
- 2006-5-7 ASP VBSCRIPT 正则表达式之 替换 URL 与 EMAIL 地址为热链接 By Stabx
- Java正则表达式匹配、替换HTML内容[使用Jakarta ORO]