最代码官方的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 LV12019年12月18日
星星
luohaipeng LV232019年11月19日
太阳月亮星星星星星星
大度嘟嘟 LV22019年9月24日
星星星星
silenceS LV42018年10月5日
月亮
幽幻梦之韩霜 LV102018年9月4日
月亮月亮星星星星
vijayChen LV162018年7月3日
太阳
sunboris514 LV82018年1月4日
月亮月亮
aihui523 LV332017年8月22日
太阳太阳星星
akaklk LV12017年5月25日
星星
lj251477124 LV12017年5月25日
星星
最代码最近浏览分享源代码列表最近浏览
said_what LV39月24日
星星星星星星
1113783182 LV17月9日
星星
12103063175月11日
暂无贡献等级
wei112233 LV152月2日
月亮月亮月亮星星星星星星
yyg20101 LV12019年12月18日
星星
luohaipeng LV232019年11月19日
太阳月亮星星星星星星
大度嘟嘟 LV22019年9月24日
星星星星
sky LV222019年7月19日
太阳月亮星星星星
柚子呐2019年5月6日
暂无贡献等级
yangctz LV212018年12月3日
太阳月亮星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友