繁体   English   中英

Jsoup Selector正则表达式匹配

[英]Jsoup Selector Regex matching

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

我在选择"div[id~=answer-[0-9]*]"使用此正则表达式

匹配的元素是:

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

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

我必须改变什么才能只得到第一个?

基于官方教程中的示例

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

看起来jsoup只是简单地检查属性是否包含可以与正则表达式匹配的部分 (如本例中的.png.jpg ),而不是是否通过regex匹配属性的整个值。

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

另外,如果要强制数字部分,则可能应使用+代替*

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

*运算符的含义是“零次或多次”,因此它仍然与第二个示例匹配。 您需要使用+运算符,而不是意味着“一次或多次”。 因此,您的语法将是:

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

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

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

然后应该工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM