我有这样一段html代码:
<p>
一、hibernate4的一些变化
</p>
<p>
hibernate升级得太快了,前段时间在社区瞄了一下,居然已经有4.2.x的发布版本。但hibernate4和spring3的整合有点麻烦,首先是sessionfactory的创建,在3的版本中是这样创建的:
</p>
<p>
<pre class="prettyprint lang-java">
Configuration cfg = new Configuration().configure();
cfg.buildSessionFactory();</pre>
<p>
但这样方式在hibernate4中已经被禁用了,在4的版本中变成这样:
</p>
我想抓取<pre class="prettyprint lang-java"></pre>中的内容,正则表达式应该怎么写,而
<pre class="prettyprint lang-java">里面的不一定是lang-java,还可能是lang-ruby或者其他,求大神支招

解决方案 »

  1.   

    Pattern pattern = Pattern.compile("<.+?>");
    Matcher matcher = pattern.matcher("<pre class='prettyprint lang-java'>aaaa</pre>");
    String str = matcher.replaceAll("");
    System.out.println(str);
      

  2.   

    String regex = "<pre class=\"prettyprint lang-.*?\">(.*?)</pre>";
    String input = "<pre class=\"prettyprint lang-java\">Configuration cfg = new Configuration().configure();cfg.buildSessionFactory();</pre>";
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(input);

    while (m.find()) {
    System.out.println(m.group(1));
    }
      

  3.   

    也可以不用正则表达式,用js的getElementByTagName()方法。
      

  4.   

    String s = "<pre class=\"prettyprint lang-java\">Configuration cfg = new Configuration().configure();cfg.buildSessionFactory();</pre>";
    Pattern pat = Pattern
    .compile("(<pre class=\"prettyprint .*?\">(.+?)</pre>)");
    Matcher mat = pat.matcher(s);
    while (mat.find()) {
    System.out.println(mat.group(2));
    }