Jsoup Selector正则表达式匹配

时间:2015-02-21 18:25:12

标签: java regex jsoup selector

我想获得具有此id模式的元素“answer- [0-9] *”

我在select "div[id~=answer-[0-9]*]"

中使用此正则表达式

匹配元素是:

<div class="post-text" id="answer-45881">

<div class="hidden modal modal-flag" id="answer-flag-modal45881">

我必须改变才能获得第一个?

3 个答案:

答案 0 :(得分:3)

基于official tutorial

的示例
[attr~=regex]: elements with attribute values that match the regular expression; 
e.g. img[src~=(?i)\.(png|jpe?g)]

看起来jsoup只是检查属性是否包含一些 part ,它可以与正则表达式匹配(如本例.png.jpg),而不是整个值属性由正则表达式匹配。

要检查正则表达式是否匹配整个字符串,您需要放置anchors表示字符串^的开头和字符串$的结尾。

如果您想强制使用数字部分,也可以使用*代替+

请尝试使用div[id~=^answer-[0-9]+$]

答案 1 :(得分:2)

*运算符表示&#34;零或更多&#34;所以它仍将匹配第二个例子。您需要使用+运算符代替&#34;一个或多个&#34;倍。所以,你的语法是:

div[id~=answer-[0-9]+]

答案 2 :(得分:1)

看起来它搜索id包含此模式,而不是匹配。

"div[id~=answer-[0-9]*$]"

应该适用。