java - 从html源代码获取链接

标签 java html

我有一个字符串作为 html 源代码。我只想从该字符串中获取链接并将这些链接放入 ArrayList 中。如您所知,我想在 <a href="THE LINK I WANT"> 之间获取一些字符串但我想在不使用任何外部库的情况下执行此操作。我如何使用 String 类和循环使用简单的算法来做到这一点?谢谢你!

最佳答案

Java Regex API 不是实现您目标的合适工具。使用其他答案中提到的高效、安全且经过良好测试的高级工具。

如果您的问题涉及 Regex API 而不是现实生活中的问题(例如学习目的)- 您可以使用以下代码来完成:

String html = "foo <a href='link1'>bar</a> baz <a href='link2'>qux</a> foo";
Pattern p = Pattern.compile("<a href='(.*?)'>");
Matcher m = p.matcher(html);
while(m.find()) {
   System.out.println(m.group(0));
   System.out.println(m.group(1));
}

输出是:

<a href='link1'>
link1
<a href='link2'>
link2

请注意 lazy/reluctant 限定符 *?必须使用 order 来减少对单个标记的分组。第0组是整场比赛,第1组是下一场比赛(下一对括号)。


需要考虑的注意事项:

使用正则表达式从 HTML 中提取值总是错误的。 HTML 语法比它最初可能出现的要复杂得多,而且即使是非常复杂的正则表达式,页面也很容易识别。

使用 HTML Parser反而。另见 What are the pros and cons of the leading Java HTML parsers?

关于java - 从html源代码获取链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9582081/

相关文章:

java - Scanner 为什么要实现 Iterator<String>?

java - 如何使用 java 以编程方式安装根 ssl 证书

HTML 缩放问题

Javascript Keyup 搜索子 div 值

jquery - 元素在移动版 chrome 和 safari 中不可见

python - 如何在django项目的html模板中创建局部变量?

java - 将对象存储在我的 2D 数组中并将其显示在 JFrame 上

java - 在保留键盘上的回车图标的同时,对 EditText 执行操作在 android 中按下回车?

java - JPA2 - 如何在 OpenJPA 中的 Join 中按嵌入复合主键中的字段进行排序

javascript - 在 AngularJS 中的选项选择上动态创建 div