|
蓝森林 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]
就可以了,注意那个?号。 |
谢啦,搞定了,原来就一个?号。 |
|