8

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

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

不工作。

4

2 回答 2

14

您可以使用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>
于 2013-09-08T09:47:56.460 回答
5

为了更准确的解析,您仍然可以使用正则表达式:

Elements content = doc.select("div[id~=(shout_)[0-9]+]");
于 2013-11-03T22:48:01.757 回答