`
dawuafang
  • 浏览: 1106065 次
文章分类
社区版块
存档分类
最新评论

java通过正则表达式匹配获取链接地址

 
阅读更多

获取页面中字符串的url地址我们都会使用正则表达式来匹配获取了,下面我来给大家总结几个匹配获取链接地址示例。

1、正则表达式中Matcher中find()方法的应用。

2、String对象中的 replaceAll(String regex,String replacement) 方法的使用。通过这个方法去除了不必要的字符串,从而得到了需要的网址和链接文字

例.1超简单的

代码如下 复制代码

String content = "<a href="URL">";
String pattern= "href="([^"]*)"";
Pattern p = Pattern.compile(pattern, 2 | Pattern.DOTALL);
Matcher m = p.matcher(content);

if(m.find()) {
System.out.println("url="+m.group(1));
}

例2.上

面只能获取带有双“号的a标题中的url,下面我们加以改进可以获取任何状态下的a标题url

代码如下 复制代码

package com.gong.example;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class Simple {

public static void main(String[] args){

String input="<a style=" " href = "http://www.111cn.net" target="_blank" >www.zjsyc.com</a>" +

"<a href = 'http://www.111cn.net' target='_blank' >www.163.com</a> " +

"<a href=http://www.hzhuti.com target=_blank >www.yahoo.com</a>";

String patternString = "\s*(?i)href\s*=\s*("([^"]*")|'[^']*'|([^'">\s]+))"; //href

Pattern pattern = Pattern.compile(patternString,

Pattern.CASE_INSENSITIVE);

Matcher matcher = pattern.matcher(input);

while (matcher.find()) {

String link=matcher.group();

System.out.println(link);

link=link.replaceAll("href\s*=\s*(['|"]*)", "");

System.out.println("--"+link);

link=link.replaceAll("['|"]", "");

System.out.println("---"+link);

}

}

}

例.3我们还可以利用它进行升级获取 获取网址和链接文字哦。

*
功能说明:分析字符串s,提取s里面的超链接和链接文字
2008年3月30日
程序人生博客
*/

代码如下 复制代码

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegTest
{
public static void main(String[] args)
{


//String s="<p id=km>&nbsp;<a href=http://down.111cn.net>空间</a>&nbsp;|&nbsp;<a ";
String s="</p><p style=height:14px><a href=http://mb.111cn.net>企业推广</a> | <a href=http://code.111cn.net>搜索风云榜</a> | <a href=/home.html>关于百度</a> | <a href=http://www.111cn.net>About Baidu</a></p><p id=b>&copy;2008 Baidu <a href=http://www.111cn.net>使用百度前必读</a> <a href=http://www.miibeian.gov.cn target=_blank>京ICP证030173号</a> <a href=http://www.hzhuti.com><img src=/get_pic/2013/11/22/20131122031447947.gif></a></p></center></body></html><!--543ff95f18f36b11-->";

String regex="<a.*?/a>";
//String regex = "<a.*>(.*)</a>";
Pattern pt=Pattern.compile(regex);
Matcher mt=pt.matcher(s);
while(mt.find())
{
System.out.println(mt.group());
System.out.println();
String s2=">.*?</a>";//标题部分
String s3="href=.*?>";

Pattern pt2=Pattern.compile(s2);
Matcher mt2=pt2.matcher(mt.group());
while(mt2.find())
{
System.out.println("标题:"+mt2.group().replaceAll(">|</a>",""));
}

Pattern pt3=Pattern.compile(s3);
Matcher mt3=pt3.matcher(mt.group());
while(mt3.find())
{
System.out.println("网址:"+mt3.group().replaceAll("href=|>",""));
}
}
}
}


分享到:
评论

相关推荐

    Java使用正则表达式匹配获取链接地址的方法示例

    主要介绍了Java使用正则表达式匹配获取链接地址的方法,简单分析了java正则匹配常用方法及获取网址链接的相关操作技巧,需要的朋友可以参考下

    正则表达式经典实例

    即使有经验的用户也经常会遇到性能不佳、误报、漏报等让人挠头的错误,本书对于如何使用正则表达式来解决一些常见的问题给出了按部就班的解决方案,其中包括c#、Java、JavaScript、Perl、PHP、Python、Ruby和VB...

    正则表达式经典实例.pdf

    即使有经验的用户也经常会遇到性能不佳、误报、漏报等让人挠头的错误,本书对于如何使用正则表达式来解决一些常见的问题给出了按部就班的解决方案,其中包括c#、Java、JavaScript、Perl、PHP、Python、Ruby和VB...

    正则表达式

    例如:下面的正则表达式匹配的就是位于单引号或双引号之内的所有字 符.但是,它要求开始和结束的引号匹配(例如两个都是双引号或者都是单引号): /[' "] [^ ' "]*[' "]/ 如果要求开始和结束的引号匹配,我们可以...

    java解析给定url

    * 正则表达式匹配关键数据 * @param line * @return */ private Set&lt;String&gt; parse(String line) { Set resSet = new LinkedHashSet(); Pattern pattern = Pattern.compile(reg); Matcher matcher = pattern...

    JAVA爬虫程序

    java多线程技术,Download...FunctionUtils.java 的功能是提供不同的静态方法,包括:页面链接正则表达式匹配,获取URL链接的元素,判断是否创建文件,获取页面的Url并将其转换为规范的Url,截取网页网页源文件的目标内容。

    JavaScript完全自学宝典 源代码

    10.7.html 使用match()方法匹配正则表达式字符串。 10.8.html 匹配数字。 10.9.html 匹配日期格式。 10.10.html 匹配时间格式。 10.11.html 匹配HTML标记。 10.12.html 匹配邮政编码。 ...

    彩票app源码体彩体育赛事双端app原生运营源码.zip

    ,原代码开源,原生android+ios,所涉及彩种几十种,可自由匹配接口,源码开源:后端JAVA,前端源码,Android源码,IOS源码,数据库,Java爬虫采集,搭建教程等。 竞彩足球,竞彩篮球,北京单场,排列3,排列5… 爬虫(Web ...

    java范例开发大全源代码

     实例105 使用正则表达式验证电话号码的格式 141  6.2 字符串缓存类StringBuffer 143  实例106 创建字符串缓存类 143  实例107 提取单个字符 144  实例108 给指定字符赋值 145  实例109 插入新的...

    Java范例开发大全 (源程序)

     实例105 使用正则表达式验证电话号码的格式 141  6.2 字符串缓存类StringBuffer 143  实例106 创建字符串缓存类 143  实例107 提取单个字符 144  实例108 给指定字符赋值 145  实例109 插入新的字符 146...

    java范例开发大全

    实例105 使用正则表达式验证电话号码的格式 141 6.2 字符串缓存类StringBuffer 143 实例106 创建字符串缓存类 143 实例107 提取单个字符 144 实例108 给指定字符赋值 145 实例109 插入新的字符 146 实例110 插入新的...

    SubEthaEdit-5.1.3.zip 可以写文章,代码,笔记

    强大的荧光笔基于状态,正则表达式和纯文本字符串。模式可以相互引用,因此HTML模式具有全功能的CSS和javascript部分。 语法样式 这些模式引用样式的语义层次结构,可以对其进行自定义以匹配您的首选项。 自动...

    java范例开发大全(pdf&源码)

    实例105 使用正则表达式验证电话号码的格式 141 6.2 字符串缓存类StringBuffer 143 实例106 创建字符串缓存类 143 实例107 提取单个字符 144 实例108 给指定字符赋值 145 实例109 插入新的字符 146 实例110 插入新的...

    Java范例开发大全(全书源程序)

    实例105 使用正则表达式验证电话号码的格式 141 6.2 字符串缓存类StringBuffer 143 实例106 创建字符串缓存类 143 实例107 提取单个字符 144 实例108 给指定字符赋值 145 实例109 插入新的字符 146 实例110 ...

    java微信公众号MVC开发框架

    处理文本适配模式,@TextMsg还支持正则表达式适配模式,这部分内容在使用参考部分说明。 本例中微信方法并没有设置参数,实际可以灵活设置参数,例如我们可以在方法中设置HttpServletRequest request,...

    一个web爬虫的事例.txt

    // 用正则表达式编译链接的匹配模式。 Pattern p = Pattern.compile("*=\\s*\"?(.*?)[\"|&gt;]", Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(pageContents); ArrayList&lt;String&gt; linkList = new ArrayList...

    PHP3程序设计

    9.1 正则表达式定义 129 9.1.1 方括号表达式 130 9.1.2 转义字符 130 9.2 POSIX风格的函数 131 9.2.1 ereg 和eregi 131 9.2.2 ereg_replace 和eregi_replace 132 9.2.3 Split 133 9.3 PERL风格函数 134 9.3.1 模式定...

    javaSE代码实例

    13.5.1 正则表达式的基本语法 259 13.5.2 Pattern类简介 262 13.5.3 Matcher类简介 263 13.5.4 Pattern与Matcher类的综合应用 264 13.6 String类中正则式的应用 266 13.6.1 模式匹配检查 266 13.6.2 ...

    Python入门网络爬虫之精华版

    常见的分析工具有正则表达式,BeautifulSoup,lxml等等。 存储 分析出我们需要的内容之后,接下来就是存储了。 我们可以选择存入文本文件,也可以选择存入MySQL或MongoDB数据库等。 存储有两个需要注意的问题: ...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    在那里还有一些其他教程的链接。而本文的该部分将让你对PHP熟悉一点。我不可能做到没有任何遗漏,我的目的只在于能让你迅速开始你的PHP编程。 2.1 首要条件 你首先必须要有一个正在工作着的支持PHP的web服务器。我...

Global site tag (gtag.js) - Google Analytics