溶液: 这有效:
String p="<pre>[\\\\w\\\\W]*</pre>";
我想匹配并捕获&lt; pre&gt;&lt; / pre&gt;的封闭内容标签 尝试了以下,不工作,出了什么问题?
String p="<pre>.*</pre>"; Matcher m=Pattern.compile(p,Pattern.MULTILINE|Pattern.CASE_INSENSITIVE).matcher(input); if(m.find()){ String g=m.group(0); System.out.println("g is "+g); }
答案 0 :(得分:3)
你想要DOTALL标志,而不是MULTILINE。 MULTILINE更改^
和$
的行为,而DOTALL则允许.
匹配行分隔符。您可能也想使用不情愿的量词:
String p = "<pre>.*?</pre>";
答案 1 :(得分:3)
Document document = Jsoup.parse(html);
for (Element element : document.getElementsByTag("pre")) {
System.out.println(element.text());
}
顺便说一下parse()
方法也可以URL
或File
。
我推荐Jsoup的原因在于它是我尝试过的所有HTML解析器中最简单的。它不仅提供类似JavaScript的方法返回实现Iterable
的元素,而且它还支持jQuery like selectors,而且对我来说是大加。
答案 2 :(得分:1)
String stringToSearch = "H1 FOUR H1 SCORE AND SEVEN YEARS AGO OUR FATHER...";
// the case-insensitive pattern we want to search for
Pattern p = Pattern.compile("H1", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(stringToSearch);
// see if we found a match
int count = 0;
while (m.find())
count++;
System.out.println("H1 : "+count);