匹配文本中的网址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
转载请注明出处。
[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
转载请注明出处。
相关文章推荐
- 匹配文本中的网址java正则表达式
- java正则表达式 匹配文本中的网址
- 匹配文本中的网址java正则表达式
- Java基于正则表达式实现查找匹配的文本功能【经典实例】
- java正则表达式来替换文本中匹配正则的内容
- Java经典实例:正则表达式,替换匹配的文本
- Java经典实例:正则表达式,替换匹配的文本
- java正则表达式匹配网页所有网址和链接文字的示例
- Java基于正则表达式实现的替换匹配文本功能【经典实例】
- java正则表达式匹配网页所有网址和链接文字的示例
- Java经典实例:正则表达式,找到匹配的文本
- SED,AWK学习笔记Part 1-----利用正则表达式进行文本匹配[转]
- Java正则表达式获取网址和链接文字解析
- JS 正则表达式(学习笔记2)匹配网址url参数
- 文本匹配模式串的通配符形式转正则表达式的方法
- Java获取网页所有网址和链接文字(正则表达式)
- Java正则表达式匹配、替换HTML内容
- Java正则表达式的完全匹配与部分匹配
- java:正则表达式匹配