我有如下形式的字符串:
[SIZE=5]字号的大小[/SIZE]
字体颜色求一个正则表达式,可以将这些替换成<font style=size:5>字号的大小</font>
<font style=color:orange>字体的颜色</font>

解决方案 »

  1.   

    (\[size=5\])(.[^\[]*)(\[\/size\])
    (\[color=(.[^\[]*)\])(.[^\[]*)(\[\/color\])
      

  2.   

    请问我该如何做?我这样替换不行啊:       s="[SIZE=5]我要的内容[/SIZE]";
           reg1="(\\[color=(.[^\\[]*)\\])(.[^\\[]*)(\\[\\/color\\])";
           reg ="(\\[size=5\\])(.[^\\[]*)(\\[\\/size\\])";
           s=s.toLowerCase().replaceAll(reg1,"");
          // s=s.toLowerCase().replaceAll(reg,"");
           System.out.println(s);
      

  3.   

    有点难,用个装饰类吧
    先用正则表达式解析出标签,如size(用来决定调用什么类装饰),以及属性5
    然后用有一个类,如SizeDecorater,它有一个构造函数SizeDecorater(String content, String value)——它们分别对应类的属性,然后用一个函数返回:
    "<font style=size:" + value + ">" + content + "</font>"
    其他同理。这种方法可以处理其他类型的标签以及嵌套标签。简单的做,此列可用:
    String str ="[SIZE=5]te[/SIZE]";
    System.out.println(str.replaceAll("\\[SIZE=(\\d+)\\](.+)\\[/SIZE\\]", "<font style=size:$1>$2</font>"));
    这种方法不能处理其他的标签
      

  4.   

    楼主是想要这个?
    String regex = "\\[(\\w+)=(\\w+)\\](.+)\\[/\\1\\]";
    String format = "<font style=$1:$2>$3</$1>";
    String str ="[SIZE=5]字号的大小[/SIZE]";
    System.out.println(str.toLowerCase().replaceAll(regex, format));
    str = "我要的内容";
    System.out.println(str.toLowerCase().replaceAll(regex, format));
      

  5.   

    错了,是
    String regex = "\\[(\\w+)=(\\w+)\\](.+)\\[/\\1\\]";
    String format = "<font style=$1:$2>$3</font>";
    String str ="[SIZE=5]字号的大小[/SIZE]";
    System.out.println(str.toLowerCase().replaceAll(regex, format));
    str = "我要的内容";
    System.out.println(str.toLowerCase().replaceAll(regex, format));
      

  6.   

    改造一下楼上的,呵呵. String regex = "\\[([^=]+)=([^]]+)\\](.+)\\[/\\1]";
    String format = "<font style=$1:$2>$3</font>";
    String str ="[SIZE=5]字号的大小[/SIZE]";
    System.out.println(str.toLowerCase().replaceAll(regex, format));
    str = "我要的内容";
    System.out.println(str.toLowerCase().replaceAll(regex, format));
      

  7.   

    在javascript版已经有正解了,谢谢各位了