如何使用正则表达式提取以下内容?
String string = "<h1>1st header</h1>" + "<h2>second header</h2>" +
"<p>some text</p>" + "<hr />";
Pattern p = Pattern.compile("</h1>(\\S+)<hr />", Pattern.MULTILINE);
输出为空,但为什么呢?
输出为空,因为 和 之间的字符</h1>
包含<hr />
空格。\S+
一旦遇到空格,您将失败。
如果您替换\\S+
为 ,.+
它应该会捕获您高度具体的示例字符串中的所有内容。但是,如果您想“正确”执行此操作,并且能够匹配不完全适合您的示例的任意 HTML,请使用HTML Agility Pack之类的 HTML 解析器。基于解析器的版本将简单、正确,并且不会危及您的理智和/或宇宙。
正则表达式 \S+ 将不匹配“某些文本”之间的空格。此外,如果您重视 sanity,请不要使用正则表达式来解析 HTML。