这个问题在正则表达式里面也有出现

解决方案 »

  1.   

    replaceAll的第一个参数是个规则表达式,不是个一般的字符串,比如:
    s.replaceAll(".", 'a');就是把任何字符都换成'a'。
      

  2.   

    只要加个反斜杠就能转义:比如:
    s.replace("\\.", "a");
    之所以需要两个反斜杠,是因为首先编译器在编译时需要对字符串转义,然后才是运行时规则表达式的转义。
      

  3.   

    按此方式使用:
        public static void main(String[] args) {
         String str = "20050936080(6200)50906";
         System.out.println(str.replaceAll("\\(6200\\)", "aaa"));
        }
      

  4.   

    现在的问题是我要替换的部分并没有括号,括号是在被替换以外的部分,
    如下我的代码:    String regexp = "<textarea wrap=virtual  id='txtContent' name='txtContent'";    String originalStr = "<tr style='height:30px;border-bottom:none;width:100%'>";
        originalStr = originalStr + "<td class='personHeadTitle_TD' style='color:black;font-size:9pt;' colspan='1' rowspan='1' align='center' valign='middle' width='15%' height='30' nowrap>&nbsp;<b><font color=red size=3 face=宋体>标题</font></b></td>";
        originalStr = originalStr + "<td class='textareaContent_frstLine'  style='color:black;font-size:9pt;'  colspan='5' rowspan='1' align='left' valign='middle'  width='85%' height='30' nowrap>&nbsp;kmonkey4</td>";
        originalStr = originalStr + "</tr>";
        originalStr = originalStr +
            "<tr style='height:120px;border-bottom:none;width:100%'>";
        originalStr = originalStr + "<td class='personHeadTitle_TD' style='color:black;font-size:9pt;' colspan='1' rowspan='1' align='center' valign='middle' width='15%' height='120' nowrap>&nbsp;<b><font color=red size=3 face=宋体>申请内容</font></b></td>";
        originalStr = originalStr + "<td class='textareaContent_frstLine'  style='color:black;font-size:9pt;'  colspan='5' rowspan='1' align='left' valign='top'  width='84%' height='120' nowrap>";
        originalStr = originalStr + "&nbsp;<textarea wrap=virtual  id='txtContent' name='txtContent' type='textarea'  style='border:none;width:99%;height:120px;overflow:hidden' readOnly >kmonkey4";
        originalStr = originalStr + "asdlfjs(a dj fljdsa)fa</textarea>";
        originalStr = originalStr + "</td>";
        originalStr = originalStr + "</tr>";
        originalStr = originalStr + "<!--ReplacedByContent-->";
        originalStr = originalStr + "<tr style='height:180px;border-bottom:none;width:100%'><td>asdfsdfsaf</td></tr>";
        try {
          Pattern p = Pattern.compile(regexp);
          //前面的字符串
          String preStr = p.split(originalStr)[0];
          //后面的字符串
          String lastStr = p.split(originalStr)[1];
          //前面最接近<tr的位置,即tr开始的地方
          int beginTrPosition = preStr.lastIndexOf("<tr");
          System.out.println("tr开始的地方"+beginTrPosition);
          //后面最接近</tr>的位置,即tr相对结束的地方
          int endTrPosition = lastStr.indexOf("</tr>");
          System.out.println("tr相对结束的地方"+endTrPosition);
          //求tr真正结束的地方,要加上preStr和regexp的长度再加</tr>的五个字符长度
          int endTrPosition2 = preStr.length()+regexp.length()+ endTrPosition+5;      String wantedStr = originalStr.substring(beginTrPosition,endTrPosition2);      p = p.compile(wantedStr);
          Matcher m = p.matcher(originalStr);      String s = m.replaceAll("");
          System.out.println("the s is:===="+s);
          p = p.compile("<!--ReplacedByContent-->");
          m = p.matcher(s);      System.out.println(m.replaceAll(wantedStr));    }
        catch (Exception ex) {
          System.out.println(ex.getMessage());
        }
      

  5.   

    java学习ingSystem.out.println(ex.getMessage());
      

  6.   

    变量wantedStr 中包含了括号(),该怎么处理
      

  7.   

    就是说,在Pattern预编译compile的时候,有没有什么选项可以忽略那些保留关键字