创建java正则表达式以获取href链接
Posted
技术标签:
【中文标题】创建java正则表达式以获取href链接【英文标题】:Creating java regex to get href link 【发布时间】:2012-01-08 14:53:07 【问题描述】:抱歉,之前有人问过这个问题,但我在网上找不到任何答案。我很难弄清楚这个正则表达式的逆:
"\"[^>]*\">"
我想用 replaceAll 替换除链接之外的所有内容。所以如果我有一个类似这样的标签:
<p><a href="http://www.google.com">Google</a></p>
我需要一个能满足这个要求的正则表达式:
s.replaceAll(regex, "");
给我这个输出:
http://www.google.com
我知道有更好的方法可以做到这一点,但我必须使用正则表达式。非常感谢任何帮助,谢谢!
【问题讨论】:
【参考方案1】:您不必使用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()
。
【讨论】:
谢谢,我很难实现它,因为我已经在使用模式/匹配器来查找以 .htm 和 .html 结尾的特定链接。 非常有用!谢谢你,亚历克斯。【参考方案2】:如果字符串中总是有一个这样的链接,试试这个:
"(^[^\"]*\")|(\"[^\"]*)$"
【讨论】:
这行得通,但是当 href 标记在链接之前有 'id=' 时失败了。我应该在我的问题中添加这个,抱歉。【参考方案3】:您可以查看http://regexlib.com/ 以获取您需要的所有正则表达式帮助。下面是 url :
^[a-zA-Z0-9\-\.]+\.(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)$
【讨论】:
按照目前的编写方式,该正则表达式不适用于具有 winchester.us、amazon.co.uk、amazon.ca 等国家代码的网站。 你是绝对正确的。我强加我的做法犯了一个错误。 另外,不适用于 Java 6.0,至少不能在 replaceAll 方法中使用。 @user1070866,那对我来说是最重要的。以上是关于创建java正则表达式以获取href链接的主要内容,如果未能解决你的问题,请参考以下文章