我正在尝试从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个字符有效。还删除了第二个?按照下面的评论。