现在有一文本:<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.   

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test {
        
        public static void main(String[] args) {
            String str = 
                "<script language=\"javascript\">\n" +
                "等待导航栏加载完成\n" +
                "function waitNavigation(){\n" +
                "}\n" +
                "</script>\n" +
                "<tr class=\"tableTitleRight2\" >&#170;</tr>\n" +
                "<td class=\"tableTitleRight2\" >&#160;</td>\n" +
                "<option value=\"<%=ProductParameters.DELAY_UNIT_NOW%>\">立即</option>\n" +
                "<title>基本信息修改</title>";
            Pattern pattern = Pattern.compile("(?is)<(script).*?/\\s*\\1>|>([^<>]*)</");
            Matcher matcher = pattern.matcher(str);
            while(matcher.find()) {
                if(matcher.start(2) > -1) {
                    System.out.println(matcher.group(2));
                }
            }
        }
    }
      

  2.   

    好像不行啊如果<script language="javascript"> 前面还有(>)就不行,
    比如
            String str = 
                "<!-- 页面级js  -->\n" +
                "<script language=\"javascript\">\n" +
                "等待导航栏加载完成\n" +
                "function waitNavigation(){\n" +
                "}\n" +
                "</script>\n" +
                "<tr class=\"tableTitleRight2\" >&#170;</tr>\n" +
                "<td class=\"tableTitleRight2\" >&#160;</td>\n" +
                "<option value=\"<%=ProductParameters.DELAY_UNIT_NOW%>\">立即</option>\n" +
                "<title>基本信息修改</title>";
      

  3.   

    public class Test {
    public static void main(String[] args) {
    String s="<tr class=\"tableTitleRight2\" >&#170; </tr> ";
    s=s.replaceAll("&#\\d{3};","");
    System.out.println(s);
    }
    }
      

  4.   

    没问题了,是我告错了,谢谢bao110908