【发布时间】:2014-10-22 08:26:54
【问题描述】:
给定一个标签,其类包含问号
<h2 class="?class-text ">mark-text should be blue</h2>
如何使用 jsoup 选择器进行选择?
我试过了
doc.select("h2.\\?class-text")
doc.select("h2.?class-text")
doc.select("h2[class=?class-text]")
doc.select("h2[class=\\?class-text]")
但这些都不起作用。
这个有效
doc.select("h2[class*=class-text]")
但我想选择完全匹配。
更新:
doc.select("h2[class~=\\?class-text]")
工作。但是没有正则表达式有解决方案吗?
【问题讨论】:
-
那不是正则表达式。事实上,这是一个无效的选择器,因为选择器中间有一个杂散的
.。 -
另外,你不能在 JSFiddle 中运行 Java 代码,所以这个 fiddle 是毫无意义的。该小提琴中的 CSS 选择器相当于您的 Java 代码中的
doc.select("h2.\\?class-text"),根据您的说法,这不起作用;然而,小提琴奏效了。 -
糟糕,h2 和 [class=] 之间的点放错了。我已经编辑了帖子。根据jsoup.org/cookbook/extracting-data/selector-syntax,它是正则表达式:“[attr~=regex]: 属性值与正则表达式匹配的元素”
-
哇,看起来 jsoup 采用了现有的选择器并重新调整了它的用途。在标准 CSS 中,它不是正则表达式,也没有基于正则表达式的选择器。
标签: java css-selectors jsoup