日期:2014-05-20  浏览次数:20663 次

求一个正则表达式,谢谢
我有如下形式的字符串:
[SIZE=5]字号的大小[/SIZE]
[COLOR=orange]字体颜色[/COLOR]

求一个正则表达式,可以将这些替换成

<font   style=size:5> 字号的大小 </font>
<font   style=color:orange> 字体的颜色 </font>

------解决方案--------------------
(\[size=5\])(.[^\[]*)(\[\/size\])
(\[color=(.[^\[]*)\])(.[^\[]*)(\[\/color\])

------解决方案--------------------
有点难,用个装饰类吧
先用正则表达式解析出标签,如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> "));
这种方法不能处理其他的标签


------解决方案--------------------
楼主是想要这个?
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 = "[COLOR=orange]我要的内容[/COLOR] ";
System.out.println(str.toLowerCase().replaceAll(regex, format));
------解决方案--------------------
改造一下楼上的,呵呵.

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 = "[COLOR=orange]我要的内容[/COLOR] ";
System.out.println(str.toLowerCase().replaceAll(regex, format));