我要从一堆网页源码中提取网址。但是有些网址有双引号 有些没有
怎么写这个正则表达式?问题不难 只是急用 不想想了,谢谢!
至少能匹配下面两种方式: 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 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)); }
------解决方案--------------------
\\ 是转意字符 代表反斜线符"\" 的意思
------解决方案--------------------