整个"((([?](w)+){1}[=]*))*((w)+){1}([&](w)+[=](w)+)*)*"表示形如"?PageNo=2&action=display"的字符串可以出现也可以不出现(即链接地址可以有参数也可以没有参数)
把上面的组合起来,我们就可以匹配一个比较全面的链接地址了。比用简单的"(http://S+)"来匹配一个链接地址要好,读者可以自行行测试比较。当然,这段代码还有很多不足之处,希望大家能够继续改进。
2)替代典型的UBB标签:
我们的目的就是要把成对的替换成<b></b>下面来看我们实现它的模板
([b])(.+)([/b])
这里用了"(.+)"来配匹到之间的整个字符串,在替代的时候我们要写成这样
str=checkexp(re,str,"<b>$2</b>")
(注意:checkexp是我自定义的函数,将在后面给出。这个函数将把按照我们提供的模板进行替代。)
也许你会问这里出现一个"$2"是什么东东,呵注意了这个$2可是很重要的,它代表了"(.+)"所配匹的整个字符串。
为什么是$2而不是$1、$3呢?因为$1代表([b])所匹配的""字符串,$3代表([/b])所匹配的""字符串,显然这里我们需要的是$2而不
是$1$3。
三、UBB正则表达模板实例
下面是我写的一个UBB函数,这个函数基本上能使你的论坛成为一个优秀的UBB代码论坛了。当然,通过改进后,你可以得到一个更强大的U
BB论坛。
代码片段:
Function ReThestr(face,str)
dim re,str
re=">"
str=checkexp(re,str,">")
re="<"
str=checkexp(re,str,"<")
re="nrn/"
str=checkexp(re,str,"<P>")
re=chr(32)
str=checkexp(re,str," ")
re="r"
str=checkexp(re,str," ")
re="[img]((http:(//|)){1}((w)+[.]){1,3}_
(net|com|cn|org|cc|tv)(((/[~]*|[~]*)
(w)+)|[.](w)+)*(w)+[.]{1}(gif|jpg|png))[/img]" ''查找图片地址
str=checkexp(re,str," <img src=''$1''> ")
re="[w](http:(//|)((w)+[.]){1,}_
(net|com|cn|org|cc|tv)(((/[~]*|[~]*)(w)+)|[.](w)+)*
(((([?](w)+){1}[=]*))*((w)+){1}([&](w)+[=](w)+)*)*)[/w]" ''查找帧地址
str=checkexp(re,str,"<iframe width=''300'' height=''300'' src=''$1''></iframe>")
re="([^(''>)])(<br>)*((http|https|ftp):_
(//|)((w)+[.]){1,}(net|com|cn|org|cc|tv|_
([0-9]{1,3}))(((/[~]*|[~]*)(w)+)|[.](w)+)*_
(((([?](w)+){1}[=]*))*((w)+){1}([&](w)+[=](w)+)*)*)" ''查找链接地址
str=checkexp(re,str,"$1$2 <a href=''$3'' target=_blank>$3</a> ")
re="([^(http://|http:)])((www|cn)[.](w)+[.]{1,}_
(net|com|cn|org|cc)(((/[~]*|[~]*)(w)+)|[.](w)+)*
(((([?](w)+){1}[=]*))*((w)+){1}([&](w)+[=](w)+)*)*)









