java正则表达式匹配html

时间:2010-05-08 00:17:15

标签: java html regex

溶液: 这有效:

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);
        }

3 个答案:

答案 0 :(得分:3)

你想要DOTALL标志,而不是MULTILINE。 MULTILINE更改^$的行为,而DOTALL则允许.匹配行分隔符。您可能也想使用不情愿的量词:

String p = "<pre>.*?</pre>";

答案 1 :(得分:3)

事实上,正则表达式not是正确的工具。使用解析器。 Jsoup是个不错的选择。

Document document = Jsoup.parse(html);
for (Element element : document.getElementsByTag("pre")) {
    System.out.println(element.text());
}

顺便说一下parse()方法也可以URLFile


我推荐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);