0

我喜欢使用正则表达式获取 html 内容。当内容写成多行时,我遇到了问题。找不到匹配项。这是我使用的正则表达式:

String regExpContent = "<div class=\"views-field views-field-body\">(\\s+)<span class=\"field-content\">([\\:\\,\\w\\s\\.\\„\\”\\-\\(\\)0123456789(&nbsp;)(\r?\n)]+)</span>(\\s+)</div>";
Pattern regExpMatcherContent = Pattern.compile(regExpContent,
            Pattern.DOTALL | Pattern.UNICODE_CHARACTER_CLASS);

(\r?\n)用来匹配新行。有谁能够帮我?

4

2 回答 2

1

请使用HTML 解析器

String html = "<div class=\"views-field views-field-body\">...</div>";
Document doc = Jsoup.parseBodyFragment(html);
Element body = doc.body();

Elements fieldContent = body.select("div.views-field-body span.field-content");

经常不鼓励使用正则表达式来解析 HMTL,因此我不会在这里重复任何论点。只要说你真的不应该这样做就足够了。

于 2013-06-30T06:16:07.317 回答
0

问题是您正在使用正则表达式来解析 html。您应该使用html 解析器


回答你的问题

Pattern.DOTALL是多余的,因为你没有.在你的正则表达式中使用任何地方

\s在您的正则表达式中将匹配换行符,因为它类似于[\r\n\t ]

问题出在你的[\\:\\,\\w\\s\\.\\„\\”\\-\\(\\)0123456789(&nbsp;)(\r?\n)]+..它应该([:,\\w\\s.„”()-]|&nbsp;)+

于 2013-06-30T06:17:44.193 回答