[英]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.