我正在尝试从 HTML 标签中读取一些内容,但在涉及正则表达式时我完全是个傻瓜(我已经使用了一些模式,但似乎都没有用)。
我正在阅读网页,查看这一行:<td title='Visit Page for Demilict'><a href='personal.php?name=Demilict&c=s' class='idk' rel='Demilict' style='color: teal;'>Demilict</a></td>
我需要从那里提取“Demilict”,如您所见,有 3 次这样做的机会。
从哪个位置提取它最好,我将如何实现?
我也使用它来查找名称,因为我需要提取大约 60 个不同的名称,它们都使用相同的格式,除了名称只能包含字母数字和下划线。
public void parse(String list) {
try {
URL url = new URL(list);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(url.openStream()));
String line;
StringBuilder stringBuilder = new StringBuilder();
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line).append("\n");
}
System.out.println(stringBuilder.toString());
Matcher matcher = namePattern.matcher(stringBuilder.toString());
if (matcher.find()) {
System.out.println("matched: " + matcher.group());
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
最佳答案
<a.*?>(\w+)</a>
将抓取 <a ...>
之间的文本和 < /a>
并将其放入第一组;但正如其他人所说,正则表达式可能不是这里的最佳选择。
编辑:首先将 + 更改为 *,因为 0 个字符是有效的。还删除了第二个?根据下面的评论。
关于java - 使用正则表达式从 HTML 标签中抓取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7160273/