Jsoup与正则表达式匹配

时间:2013-09-08 09:35:20

标签: java jsoup

我遇到了使用jsoup的问题。我无法匹配<div id="shout_132684">这些数字正在发生变化。我应该如何匹配?

Elements content = doc.select("div:matches(id=\"shout_.+?\")");

不起作用。

2 个答案:

答案 0 :(得分:11)

您可以使用 startswith CSS选择器^=。 Jsoups .select(...)支持它。

你可以这样做:

doc.select("div[id^=shout]");

这是一个完整的例子:

public static void main(String[] args)  {
    Document parse = Jsoup.parse("<div id=\"shout_23\"/>" +
                                 "<div id=\"shout_42\"/>" +
                                 "<div id=\"notValidId\"/>" +
                                 "<div id=\"shout_1337\"/>");

    Elements divs = parse.select("div[id^=shout");

    for (Element element : divs) {
        System.out.println(element);
    }
}

它将打印:

<div id="shout_23"></div>
<div id="shout_42"></div>
<div id="shout_1337"></div>

答案 1 :(得分:5)

要获得更准确的解析,您仍然可以使用正则表达式执行此操作:

Elements content = doc.select("div[id~=(shout_)[0-9]+]");