使用JSoup解析两个不同标记之间的文本

时间:2013-08-19 16:47:29

标签: java regex jsoup

我有以下HTML ...

<h3 class="number">
<span class="navigation">
6:55 <a href="/results/result.html" class="under"><b>&raquo;</b></a>
</span>**This is the text I need to parse!**</h3>

我可以使用以下代码从h3标签中提取文本。

Element h3 = doc.select("h3").get(0);

不幸的是,这给了我标签中的所有内容。

6:55 &raquo; This is the text I need to parse!

我可以使用Jsoup来解析不同的标签吗?这样做有最好的做法(正则表达式吗?)

2 个答案:

答案 0 :(得分:3)

  

(正则表达式?)

不,正如您可以阅读this question的答案,您无法使用正则表达式解析HTML。

试试这个:

Element h3 = doc.select("h3").get(0);
String h3Text = h3.text();
String spanText = h3.select("span").get(0).text();
String textBetweenSpanEndAndH3End = h3Text.replace(spanText, "");

答案 1 :(得分:0)

不,JSoup不是为此而做的。它应该解析一些层次化的东西。搜索结束标记和开始标记之间的文本,或者反过来对JSoup没有任何意义。这就是正则表达式的用途。

但是你当然应该首先缩小它,尽可能先使用JSoup,然后再使用正则表达式在字符串上进行拍摄。