蓝森林首页 | 返回主页 | 本站地图 | 站内搜索 | 联系信箱 |
 您目前的位置:首页 > 自由软件 > 技术交流 > 应用编程


    

蓝森林 http://www.lslnet.com 2006年8月25日 8:28

[vbscript UBB]问题求助

我想得到如下效果:
[color=red]红色[/color]
[color=blue]蓝色[/color]

[color=yellow]黄色[/color]

[color=gerrn]绿色[/color]

[color=gray]灰色[/color]

[color=purple]紫色[/color]

[color=orange]橙色[/color]


我这样定义函数:
[code]
function ubb(text)
ubb=text
re="\[color=(blue|gray|green|purple|orange|red|yellow)\](.+)\[\/color\]"
                        ubb=checkexp(re,ubb,"<font color=$1>$2</font>")
end function

Function CheckExp(patrn,strng,tagstr)
Dim regEx,Matches
Set regEx=New RegExp
regEx.Pattern=patrn
regEx.IgnoreCase=true
regEx.Global=True
Matches=regEx.replace(strng,tagstr)
CheckExp=Matches
end function       
[/code]
但是它只匹配最外面的那层,也就是说只匹配第一个开头和最后一个结尾所组成的color,我要怎样改进一下呢?
高手指教!  :(

问题出在你的正则表达式上,因为你表达式里只限定匹配一次,所以第二次就不匹配或者说把整个当成一个来匹配了。
改成:
[code]
\[color=(blue|gray|green|purple|orange|red|yellow)\](.+?)\[\/color\]
[/code]
就可以了,注意那个?号。

谢啦,搞定了,原来就一个?号。




Copyright © 1999-2000 LSLNET.COM. All rights reserved. 蓝森林网站 版权所有。 E-mail : webmaster@lslnet.com