从html源代码获取链接

El3*_*1c4 1 html java

我有一个字符串作为HTML源代码.我想只获取该字符串中的链接并将这些链接放入ArrayList中.如你所知,我想在两者之间找到一些字符串<a href="THE LINK I WANT">但是我想在不使用任何外部库的情况下这样做.如何使用String类和循环的简单算法来完成它?谢谢!

Ram*_*ngh 5

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));
}
Run Code Online (Sandbox Code Playgroud)

输出是:

<a href='link1'>
link1
<a href='link2'>
link2
Run Code Online (Sandbox Code Playgroud)

请注意懒惰/不情愿的资格赛*?必须使用以减少分组到单个标记.组0是整个匹配,组1是下一组匹配(下一对括号).


要考虑的注意事项:

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

请改用HTML Parser.另请参阅主要Java HTML解析器的优缺点是什么?