我有这个包含大量 html 的字符串,我试图从字符串的 href="..."部分提取链接。 href 可以是以下形式之一:
<a href="..." />
<a class="..." href="..." />
我对正则表达式没有真正的问题,但出于某种原因,当我使用以下代码时:
String innerHTML = getHTML();
Pattern p = Pattern.compile("href=\"(.*)\"", Pattern.DOTALL);
Matcher m = p.matcher(innerHTML);
if (m.find()) {
// Get all groups for this match
for (int i=0; i<=m.groupCount(); i++) {
String groupStr = m.group(i);
System.out.println(groupStr);
}
}
有人能告诉我我的代码有什么问题吗?我在 php 中做了这些东西,但在 Java 中我不知何故做错了......发生的事情是每当我尝试打印它时它都会打印整个 html 字符串......
编辑:让每个人都知道我正在处理什么样的字符串:
<a class="Wrap" href="item.php?id=43241"><input type="button">
<span class="chevron"></span>
</a>
<div class="menu"></div>
每次我运行代码时,它都会打印整个字符串...这就是问题所在...
关于使用 jTidy...我正在研究它,但如果知道在这种情况下出了什么问题也会很有趣...
最佳答案
.*
这是一个贪婪的操作,将接受任何字符,包括引号。
尝试这样的事情:
"href=\"([^\"]*)\""
关于Java:我有一大串 html,需要提取 href ="..."文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1670593/