JAVA 正则表达匹配 <a href="XXX">xxx</a>

利用java.net.URL已经获取网页代码,想从其中的“指定内容”获取“URL”地址,我查看了些正则教程还是未能解答出,麻烦请问大侠们这个正则表达式应该如何写,谢谢!
[b]问题补充:[/b]
TO:pwg17
如果自己解析,应该如何解析,我确实想不出高效的方法。希望指教。

不建议用正则表达式。

自己解析Html,或用htmlparser http://htmlparser.sourceforge.net/

正则表达式的话,分两步,先区配a标签,然后再区配a标签里面的链接。
区配a标签的: [code="java"]])*>[/code]

区配a标签里面链接的:[code="java"]href\s*=\s*(?:"([^"]*)"|'([^']*)'|([^"'>\s]+))[/code]

以上正则表达式参考《精通正则表达式》。
简单的解析Html任务的话用用正则表达式还可以,要求长期稳定运行的话,由于Html的不确定性和不规范,正则表达式常会遇到 指数级区配问题和CPU占用过高,特别是在多线程中。指数级区配表现为CPU 100%,程序卡在那里。

 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));
}

可参考htmlparser,项目地址:http://htmlparser.sourceforge.net/
以想提取出页面中所有a标签为例子,简单点说,网页源码按字符一个一个从头到尾读取,遇到 '<' 时,判断下一个字符串是否是'a',若是'a'的话,在判断后面是否是空格("\r\n\t ")。若是的话,表示遇到a标签了,接下来就是解析这个标签的属性名和属性值,如,跳过'a' 后面的空格后,读取下一个字符,直到遇到'=',空格或单引号或双引号,这些读取出来的就是属性名,......请看htmlparser,里面很详细。

也可用堆栈结构解析Html。看你是要做什么了,简单任务的话,没必要弄这么复杂。用正则表达式就算了。