0

如何使用正则表达式提取以下内容?

String string = "<h1>1st header</h1>" + "<h2>second header</h2>" +
"<p>some text</p>" + "<hr />";

Pattern p = Pattern.compile("</h1>(\\S+)<hr />", Pattern.MULTILINE);

输出为空,但为什么呢?

4

2 回答 2

4

输出为空,因为 和 之间的字符</h1>包含<hr />空格。\S+一旦遇到空格,您将失败。

如果您替换\\S+为 ,.+它应该会捕获您高度具体的示例字符串中的所有内容。但是,如果您想“正确”执行此操作,并且能够匹配不完全适合您的示例的任意 HTML,请使用HTML Agility Pack之类的 HTML 解析器。基于解析器的版本将简单、正确,并且不会危及您的理智和/或宇宙。

于 2012-05-15T21:57:03.983 回答
3

正则表达式 \S+ 将不匹配“某些文本”之间的空格。此外,如果您重视 sanity,请不要使用正则表达式来解析 HTML

于 2012-05-15T21:54:15.230 回答