最代码官方的gravatar头像
最代码官方 2013-11-21 11:40:49

匹配文本中的网址java正则表达式

公司有个业务需要匹配文本中的网址,度娘,谷哥了半天经常看到有对html中获取超链接的正则,只要匹配<a href=['"]?(.*?)['"]?即可,但如果是普通文本类型的则比较费事些,分享下最后的表达式:

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

public class URLMatcher {
	public static void main(String[] args) {
		Pattern pattern = Pattern
				.compile("(http://|ftp://|https://|www){0,1}[^\u4e00-\u9fa5\\s]*?\\.(com|net|cn|me|tw|fr)[^\u4e00-\u9fa5\\s]*");
		// 空格结束
		Matcher matcher = pattern
				.matcher("随碟附送下载地址http://www.xxx.com/sdfsdf.htm?aaaa=%ee%sss ?sdfsyyy空格结束");
		while (matcher.find()) {
			System.out.println(matcher.group(0));
		}

		// 中文结束
		matcher = pattern
				.matcher("随碟附送下载地址http://www.xxx.com/sdfsdf.htm?aaaa=%ee%sss网址结束");
		while (matcher.find()) {
			System.out.println(matcher.group(0));
		}

		// 没有http://开头
		matcher = pattern
				.matcher("随碟附送下载地址www.xxx.com/sdfsdf.htm?aaaa=%ee%sss网址结束");
		while (matcher.find()) {
			System.out.println(matcher.group(0));
		}

		// net域名
		matcher = pattern
				.matcher("随碟附送下载地址www.xxx.net/sdfsdf.htm?aaaa=%ee%sss网址结束");
		while (matcher.find()) {
			System.out.println(matcher.group(0));
		}

		// xxx域名
		matcher = pattern
				.matcher("随碟附送下载地址www.xxx.xxx/sdfsdf.htm?aaaa=%ee%sss网址结束");
		while (matcher.find()) {
			System.out.println(matcher.group(0));
		}

		// yyyy域名匹配不到
		System.out.println("匹配不到yyyy域名");
		matcher = pattern
				.matcher("随碟附送下载地址www.xxx.yyyy/sdfsdf.html?aaaa=%ee%sss网址结束");
		while (matcher.find()) {
			System.out.println(matcher.group(0));
		}

		// 没有http://www.
		matcher = pattern
				.matcher("随碟附送下载地址xxx.com/sdfsdf.html?aaaa=%ee%sss网址结束");
		while (matcher.find()) {
			System.out.println(matcher.group(0));
		}

	}
}

结果是死的,但思路是活的,大家可以根据自己的业务随意改写表达式。

有图有真相:

匹配文本中的网址java正则表达式


打赏

文件名:URLMatcher.java,文件大小:1.826K 下载
最代码最近下载分享源代码列表最近下载
yyg20101  LV1 2019年12月18日
luohaipeng  LV23 2019年11月19日
大度嘟嘟  LV2 2019年9月24日
silenceS  LV4 2018年10月5日
幽幻梦之韩霜  LV10 2018年9月4日
vijayChen  LV16 2018年7月3日
sunboris514  LV8 2018年1月4日
aihui523  LV34 2017年8月22日
akaklk  LV1 2017年5月25日
lj251477124  LV1 2017年5月25日
最代码最近浏览分享源代码列表最近浏览
微信网友_6411724627349504  LV3 2023年4月3日
crosa_Don  LV18 2022年7月22日
22395797  LV3 2021年3月31日
Zeorwyc  LV8 2021年3月20日
dongzhan  LV12 2020年12月8日
said_what  LV3 2020年9月24日
1113783182  LV1 2020年7月9日
1210306317 2020年5月11日
暂无贡献等级
wei112233  LV15 2020年2月2日
yyg20101  LV1 2019年12月18日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友