一个简单的替换UBB问题String ff="dd";
 
String fd="(.*?)";
  
out.print(ff.replaceAll(fd,"<b>$1</b>"));
 
输出结果:
[]dd
其中 ]dd[ 为粗体, 这不是我想要的结果,应该得到粗体的dd才对啊.
改一下,加上\
String ff="[b]dd";
 
String fd="\[b\](.*?)\[\/b\]";
  
out.print(ff.replaceAll(fd,"<b>$1</b>"));
  
编译五个 illegal escape character 错误
到底为什么,哪位前辈解决了马上给分,谢谢.

解决方案 »

  1.   

    String ff="dd";
     
    String fd="(.*?)";
      
    out.print(ff.replaceAll(fd,"$1"));
      

  2.   

    楼上没有明白我的意思,我是要替换UBB代码dd成<b>dd</b>
      

  3.   

    String ff="dd";String fd="\\[b\\]([^\\[\\]]*)\\[/b\\]";System.out.print(ff.replaceAll(fd,"<b>$1</b>"));
      

  4.   

    []方括号转义问题,一个\是JAVA的转义,再来一个\才是正则表达式的转义,所以需要两个\\转义
      

  5.   

    中间的([^\\[\\]]*)表示不包含[]的字符串重复0-N次,否则要是有多个dddddd就会当成一个处理,(括号里边的就代表$1)