现在有一文本:<script language="javascript">
等待导航栏加载完成
function waitNavigation(){
}
</script>
<tr class="tableTitleRight2" >&#170;</tr>
<td class="tableTitleRight2" >&#160;</td>
<option value="<%=ProductParameters.DELAY_UNIT_NOW%>" >立即</option>
<title>基本信息修改</title>
我现在想匹配所有的标签内容(除了script标签以外)我想要的匹配结果应该是:&#170;
&#160;
立即
基本信息修改

但是我用表达式 >[^<|^>]*</结果是:等待导航栏加载完成
function waitNavigation(){
}
&#170;
&#160;
立即
基本信息修改
大家有什么办法?

解决方案 »

  1.   

    思路。以“>”开始以“<”结束。中间只能出现“汉字,&,#,;,数字”
      

  2.   

    我写的可能有点麻烦。。public static void main(String[] args) throws Exception {
    String str = "<script language=\"javascript\"> "+
    "等待导航栏加载完成 "+
    "function waitNavigation(){ "+
    "} "+
    "</script> "+
    "<tr class=\"tableTitleRight2\" >&#170; </tr> "+
    "<td class=\"tableTitleRight2\" >&#160; </td> "+
    "<option value=\" <%=ProductParameters.DELAY_UNIT_NOW%>\" >立即 </option> "+
    "<title>基本信息修改 </title><a href='#' style='border:solid 1px red'>测试链接</a>"+
    "<script>var str = \"js里面的字符串\";</script>";
    Pattern p = Pattern.compile("<(\\w+)(?:((?!>)|(?<=%)).)*>(.+?)</\\1>(?<!</script>)");
    Matcher m = p.matcher(str);
    while (m.find()) {
    System.out.println(m.group(3));
    }
    }结果:&#170; 
    &#160; 
    立即 
    基本信息修改 
    测试链接