当前位置: 代码迷 >> J2SE >> 50分求网址的正则表达式解决方法
  详细解决方案

50分求网址的正则表达式解决方法

热度:28   发布时间:2016-04-24 13:02:10.0
50分求网址的正则表达式

我要从一堆网页源码中提取网址。但是有些网址有双引号 有些没有
怎么写这个正则表达式?问题不难 只是急用 不想想了,谢谢!
至少能匹配下面两种方式: http://www.abc.com
或者 "http//:www.abc.com"

------解决方案--------------------
Java code
    String str = "<a href=\"http://www.abc.com\">12</a><a href=http://www.abc.com>123</a><a href=\"http://www.abc.com\" target=''>12</a>";    Pattern p = Pattern.compile("href=[\\\"]?(.*?)[\\\"]?[\\s>]");    Matcher m = p.matcher(str);    while (m.find()) {      System.out.println(m.group(1));    }
------解决方案--------------------
你举个例子,光是href的话1楼的方法可以~
------解决方案--------------------
[a-zA-z]+://[^\s]*

------解决方案--------------------
探讨
Java codeString str="<a href=\"http://www.abc.com\">12</a><a href=http://www.abc.com>123</a><a href=\"http://www.abc.com\" target=''>12</a>";
Pattern p=Pattern.compile("href=[\\\"]?(.*?)[\\\"]?[\\s>]");
Matcher m=p.matcher(str);while(m.find()) {
System.out.println(m.group(1));
}



------解决方案--------------------
正在学正则,弄了老半天才出来,.........呵呵,向楼上的几位学习....

注:是看了老紫竹的改的,........
Java code
import java.util.regex.Matcher;import java.util.regex.Pattern;public class Absf {    public static void main(String[] args) {        String str = "<a HREF=\"http://www.aasd.com\">12</a><a href=http://www.abc.com>123</a> <a href=\"http://www.woadfw.com\" target=''>12</a>";       String pattern ="<\\s*a\\s*href\\s*=\\s*[\"]?([^\"|^<]*)[\"]?>?[\\s>]";      System.out.println(pattern);       Pattern p = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE); //有可能href是大写        Matcher m = p.matcher(str);        while (m.find()) {          System.out.println(m.group(1));        }    }}
------解决方案--------------------
Java code
Pattern p = Pattern.compile("href=[\"]?(.*?)[\"]?[\\s>]" ,Pattern.CASE_INSENSITIVE|Pattern.DOTALL);        Matcher m = p.matcher(html);        while (m.find()) {          System.out.println(m.group(1));        }
------解决方案--------------------
\\ 是转意字符 代表反斜线符"\" 的意思

------解决方案--------------------
探讨
感谢各位。

顺便问下大家,1楼老紫竹的表达式Pattern p = Pattern.compile("href=[\\\"]?(.*?)[\\\"]?[\\s>]");

中,为什么同样是转义,前面两个是3个\\\ 后面一个s前却只有2个\\
而且我平时用正则的时候 还有时是只要一个的。
谢谢
  相关解决方案