正则表达式从html输出中提取标记之间的内容

时间:2016-05-12 07:01:34

标签: java regex html-parsing

我需要从这个html片段中提取一个特定的值。因为我不想使用任何外部库,使用核心java实现这一点的唯一方法是使用正则表达式。由于我从未使用过正则表达式,如果您可以建议如何从下面的输入中检索整数值,那将会很棒。

<tr><td>GLOBALID=123245</td></tr>

我需要提取分配给GLOBALID的整数值。

3 个答案:

答案 0 :(得分:1)

        String text = "GLOBALID=123245";
        Pattern p = Pattern.compile("GLOBALID=(\\d+)");
        Matcher m = p.matcher(text);
        if (m.find()) {
            System.out.println(m.group(1));
        }

答案 1 :(得分:0)

这将是解决方案:

/=(.*)

但严重的是,为什么你只是谷歌搜索或搜索SO?

这是一个类似的话题:Regex match everything after question mark?

答案 2 :(得分:0)

它是XML的并不重要。将输入视为普通字符串,您可以使用String globalId = str.replaceAll("(?s)(?:.(?!GLOBALID))*(?:.GLOBALID=(\\d+))?.*", "$1");

获取数字
(?s)

这使用正则表达式中的捕获组(与整个输入匹配)和替换术语中的后引用。

DOTALL标志String globalId = str.replaceAll("(?s).*GLOBALID=(\\d+).*", "$1"); 就在那里,即使输入中嵌入了换行符也能正常工作(感谢{{3}})。

方便的是,由于可选(非捕获)组,如果输入中没有全局ID,则结果将为空白。

如果您确定它始终存在,您可以将正则表达式简化为:

{{1}}

当(如此处)匹配是一个简单的标记时,您可以避免使用XML解析库(我喜欢瘟疫)。