java - 使用正则表达式从 HTML 标签中抓取文本

标签 java regex

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

关于java - 使用正则表达式从 HTML 标签中抓取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7160273/

相关文章:

regex - sed 在两个字符串之间查找和替换字符

php - 替换所有未包含在 OPEN 和 CLOSE 单词中的特定单词?

java - Dagger 开关模块

java - 我的 Jira 插件一直失败

Java ByteArrayInputStream.read 结果保存在字节数组中——保存 ASCII 值

java - Spring MVC - 在 Controller 上设置初始化属性

c# - 尝试替换空字符串时无法识别的转义序列

javascript - Node.js : Regex to make sure the string is the first in the line

java - 扫描仪输入 - 输入流结束指示器

regex - 如何在Windows中使用findstr返回具有匹配子字符串的字符串