我正在尝试从HTML标记中读取某些内容,而对于正则表达式,我完全是愚蠢的(我虽然有些习惯,但似乎都不起作用)。

我正在阅读网页,显示以下行:<td title='Visit Page for Demilict'><a href='personal.php?name=Demilict&amp;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个字符有效。还删除了第二个?按照下面的评论。

10-07 21:19