正则表达式多行与HTML代码?

时间:2012-05-15 21:48:23

标签: java regex

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

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

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

输出为空,但为什么?

2 个答案:

答案 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