使用正则表达式java匹配新行?

时间:2013-06-30 06:06:50

标签: java regex

我喜欢使用正则表达式获取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)来匹配新行。有人能帮助我吗?

2 个答案:

答案 0 :(得分:1)

请使用HTML parser

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,因此我不会重复这里的任何论点。我只想说你真的不应该这样做。

答案 1 :(得分:0)

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


回答你的问题

您的Pattern.DOTALL是多余的,因为您未在正则表达式中的任何位置使用.

你的正则表达式中的

\s会匹配换行符,因为它类似于[\r\n\t ]

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