用asp+xmlhttp编写web采集程序(13)



整个"((([?](\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="\n\r\n/" 
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)+)*)*) 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/3140.html