您的位置:首页 > 编程语言 > Java开发

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

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

[java] view
plain copy

 print?





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.zuidaima.com/sdfsdf.htm?aaaa=%ee%sss ?sdfsyyy空格结束");  

        while (matcher.find()) {  

            System.out.println(matcher.group(0));  

        }  

  

        // 中文结束  

        matcher = pattern  

                .matcher("随碟附送下载地址http://www.zuidaima.com/sdfsdf.htm?aaaa=%ee%sss网址结束");  

        while (matcher.find()) {  

            System.out.println(matcher.group(0));  

        }  

  

        // 没有http://开头  

        matcher = pattern  

                .matcher("随碟附送下载地址www.zuidaima.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.zuidaima.xxx/sdfsdf.htm?aaaa=%ee%sss网址结束");  

        while (matcher.find()) {  

            System.out.println(matcher.group(0));  

        }  

  

        // yyyy域名匹配不到  

        System.out.println("匹配不到yyyy域名");  

        matcher = pattern  

                .matcher("随碟附送下载地址www.zuidaima.yyyy/sdfsdf.html?aaaa=%ee%sss网址结束");  

        while (matcher.find()) {  

            System.out.println(matcher.group(0));  

        }  

  

        // 没有http://www.  

        matcher = pattern  

                .matcher("随碟附送下载地址zuidaima.com/sdfsdf.html?aaaa=%ee%sss网址结束");  

        while (matcher.find()) {  

            System.out.println(matcher.group(0));  

        }  

  

    }  

}  

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

有图有真相:



相关代码下载:http://www.zuidaima.com/share/1575653789993984.htm
转载请注明出处。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: