標籤:正則匹配 網址匹配
原文:匹配文本中的網址javaRegex
原始碼:http://www.zuidaima.com/share/1575653789993984.htm
公司有個業務需要匹配文本中的網址,度娘,穀哥了半天經常看到有對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));}}}
結果是死的,但思路是活的,大家可以根據自己的業務隨意改寫運算式。
有圖有真相:
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
匹配文本中的網址javaRegex