在JSoup中,如何编写一个匹配可以来自多个标签的元素的选择器,并包含一个文本短语?
例如,我想匹配任何包含"短语"。
的标头标记这有效,但我想避免重复:
:has(h1:contains(phrase), h2:contains(phrase), h3:contains(phrase))
这仅匹配包含以下短语的h3
个:
:has(h1, h2, h3:contains(phrase))
抱歉,我之前没有说明,因为我想让问题保持简单。 :(我需要一个纯粹的选择器解决方案,因为我实际上使用jsoup
https://jsoup.org/cookbook/extracting-data/selector-syntax"支持CSS(或jquery)之类的选择器语法来查找匹配元素"。 / p>
答案 0 :(得分:1)
一种选择是使用filter()
方法。
$(document).ready(function() {
$("h1,h2,h3").filter(":contains('key word')").addClass('bingo');
});
.bingo {
color: #ff0000;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
<h1 class="not-it">This header does not contain the phrase</h1>
<h2 class="not-it">This header does not contain the phrase</h2>
<h3 class="not-it">This header does not contain the phrase</h3>
<h1 class="it">This header contains the key word</h1>
<h2 class="it">This header contains the key word</h2>
<h3 class="it">This header contains the key word</h3>
<h4 class="it">This header contains the key word but is an H4</h4>
</div>
答案 1 :(得分:1)
JSoup不仅支持select(String query)
类型的对象的Document
方法,还支持类型为Elements
的对象的select(String query)
方法。 Elements
本身会返回Elements hWithText = doc.select("h1,h2,h2").select(":matchesOwn(regEx)");
。因此,您可以连接几个select语句来过滤掉您想要的内容:
select(":contains(whatever)"
当然,如果您不需要正则表达式的灵活性,也可以使用{{1}}。