2011-11-29 38 views
1

对不起,如果这之前已被问过,但我无法在网上找到任何答案。我有一个很难逆搞清楚这个正则表达式:创建java正则表达式以获取href链接

“\” [^>] * \“>”

我想使用的replaceAll替换除了链接一切。所以,如果我有一个类似的标签:

<p><a href="http://www.google.com">Google</a></p>

我需要一个正则表达式,将满足这样的:

s.replaceAll(正则表达式, “”);

给我这个输出:

http://www.google.com

我知道有更好的方法来做到这一点,但我必须使用正则表达式。任何帮助真的很感激,谢谢!

回答

13

您不必使用replaceAll。更好地利用模式分类如下所示:

Pattern p = Pattern.compile("href=\"(.*?)\""); 
Matcher m = p.matcher(html); 
String url = null; 
if (m.find()) { 
    url = m.group(1); // this variable should contain the link URL 
} 

如果你有几个链接到HTML中循环执行m.find()

+0

谢谢,这是我很难,因为我已经使用模式/匹配地发现,以.htm和.html结束具体环节实现它。 – user1070866

+0

非常有用!谢谢Alex。 –

+0

这不是删除像http://example.com的网址 –

0

如果你总是有一个字符串一个这样的链接,试试这个:

"(^[^\"]*\")|(\"[^\"]*)$" 
+0

这工作,但失败时,href标记有'id ='链接之前。我应该在我的问题中加上这个,对不起。 – user1070866

0

你可以检出http://regexlib.com/您需要的所有正则表达式的帮助。和下面的一个是网址:

^[a-zA-Z0-9\-\.]+\.(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)$ 
+0

它是目前编写的方式,该正则表达式不适用于像winchester.us,amazon.co.uk,amazon.ca等国家代码的网站。 – spaaarky21

+0

你是绝对正确的。强加我的练习,我犯了一个错误。 – kommradHomer

+0

此外,不适用于Java 6.0,至少不在replaceAll方法中。 – user1070866