如何使用正则表达式提取以下内容?
String string = "<h1>1st header</h1>" + "<h2>second header</h2>" +
"<p>some text</p>" + "<hr />";
Pattern p = Pattern.compile("</h1>(\\S+)<hr />", Pattern.MULTILINE);
输出为空,但为什么?
答案 0 :(得分:4)
输出为空,因为</h1>
和<hr />
之间的字符包含空格。一旦遇到空格,您的\S+
就会失败。
如果您将\\S+
替换为.+
,它应该会捕获高度具体的示例字符串中的所有内容。但是,如果您愿意这样做“ “,并且能够匹配不完全适合您的示例的任意HTML,使用像HTML Agility Pack这样的HTML解析器。基于解析器的版本将变得简单,正确,并且不会endanger your sanity and/or the universe.
答案 1 :(得分:3)
正则表达式\ S +与“某些文本”之间的空格不匹配。另外,don't use regex to parse HTML if you value your sanity。