匹配文字中的網址java正則表示式
阿新 • • 發佈:2019-01-24
司有個業務需要匹配文字中的網址,度娘,谷哥了半天經常看到有對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.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)); } } }
結果是死的,但思路是活的,大家可以根據自己的業務隨意改寫表示式。
有圖有真相:
轉載請註明出處。