【发布时间】:2015-09-26 21:37:45
【问题描述】:
我的 HTML 页面如下所示:
<htm>
<section class="posts">
<script type="application/ld+json">
{
"url": "http://schema.org",
"title": "some Title"
}
</script>
<article class="post">
</html>
我想提取<script type="application/ld+json"> 和</script> 之间的数据。我已尝试使用以下代码,但无法正常工作。
Pattern pattern = Pattern.compile("<script type=\"application\\/ld\\+json\">(.*?)</script>");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
我做错了吗? 谢谢。
【问题讨论】:
-
是的,你做错了什么:html 上的正则表达式 = 坏主意。使用 DOM 解析器...
-
在模式的开头添加
(?s)。 -
谢谢,成功了。 DOM 解析器,尤其是来自jsoup.org/download 的解析器本来是一个更简洁的解决方案,但这是一个非常小的玩具项目,所以为了速度,将使用正则表达式破解。不过还是谢谢。