Jsoup与正则表达式匹配

Cor*_*Cor 6 java jsoup

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

Elements content = doc.select("div:matches(id=\"shout_.+?\")");
Run Code Online (Sandbox Code Playgroud)

不行.

d0x*_*d0x 12

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

你可以这样做:

doc.select("div[id^=shout]");
Run Code Online (Sandbox Code Playgroud)

这是一个完整的例子:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

它将打印:

<div id="shout_23"></div>
<div id="shout_42"></div>
<div id="shout_1337"></div>
Run Code Online (Sandbox Code Playgroud)

  • @Cor如果它有效,你应该接受这个答案. (2认同)

小智 5

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

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