您的位置:首页 > 编程语言 > VB

VBScript中的正则表达式语法详解

2008-01-17 17:47 225 查看
VBScript中的正则表达式语法详解

在vbscript中功能最强大也最灵活的的要数正则表达式(RegExp对象)和类(class)了。

我也是在不久前才完全的懂得正则表达式的。

-------------------正则表达式的所有内容-----------------------------

RegExp属性
Global
IgnoreCase
Pattern

RegExp方法
Execute
Replace
Test

RegExp对象
Match
Match属性
FirstIndex
Length
Value

RegExp集合
Matches
SubMatches

------------------这些内容均包含在置顶帖子中的vbscript手册中-----------------------------

我在学习正则表达式的时候根本不知何谓正则表达式、对他的理解也非常模糊,以至于接触了很长时间才懂得,虽然vbs手册中有很详细地解释。

正则表达式我个人将其理解为用来搜索文本然后然后对搜索结果作处理的一些列动作。

先来看一段大家所熟知的ubb代码
function ubb(str)
Dim rex,match,matches ' 建立变量。
Set rex= New RegExp ' 建立规范表达式。
rex.IgnoreCase = True ' 设置是否区分字母的大小写。
rex.Global = True ' 设置全程性质。
rex.Pattern = "/[url=(.*)](.*)/[//url]" ' 设置模式。官方是这样解释的,我认为我们应该换一种叫法:搜索方法,这样我们才便于理解。
ubb = rex.replace(str,"<a href=$1>$2</a>") '将我们搜索到的内容替换
'我们在设定搜索的时候用到了两个括号,也就是说我们将只需要用到这两个括号中的内容,这两个括号中的内容在替换的时候将会用$1(第一个括号中的内容)和$2(第二个括号中的内容)来代替。
end function
'用法
dim text
text="[url=http://www.aaa.com]link[/url]"
document.write ubb(text) '输出文本并调用正则表达式
'如果在asp中使用请将document替换为response

上面是一个简单的正则演示,在这个演示中我们只用了一行内容,用方法replace在替换文字的时候只处理一行中的第一个ubb代码头和最后的一个ubb代码的尾,如下:
[url=http://www.aaa.com]link[/url] [url=http://www.aaa.com]link[/url]
将会被替换为<a href=http://www.aaa.com]link[/url] 这里是被匹配的名称
RetStr = RetStr & "位于" & Match.FirstIndex & "。"'这里是匹配内容的第一个字符,该数字从0开始
RetStr = RetStr & "匹配的长度为"& Match.Length & "个字符。" 这里不用解释了吧?
RetStr = RetStr & vbCRLF '这里是换行
Next
RegExpTest = RetStr
End Function
document.write(RegExpTest("is.", "IS1 is2 IS3 is4"))
'如果在asp中使用请将document替换为response
在这个示例中我们可以看到方法Execute和对象Match是使用在集合Matches中的,Match和Matches是作为变量来使用的,为了我们很容易得看懂它,我们没有必要将他们换名字。关于对象Match的属性,我在上面的示例中都做了注释了。

最后我们来看集合SubMatches,代码如下:(由于官方的这段代码很含糊,所以我修改了一下)
Function SubMatchTest(inpStr)
Dim Re, Match, Matches
Set Re = New RegExp
Re.Pattern = "(/w+)@(/w+)/.(/w+)"
Set Matches = Re.Execute(inpStr)
Set Match = Matches(0) '由于这里没有使用循环,所以只能搜索一次。只匹配搜索到的第一个内容
retStr = "电子邮件地址是: " & Match & vbNewline ' 这里是匹配的内容
retStr = retStr & "电子邮件别名是: " & Match.SubMatches(0) '第一个括号中的内容
retStr = retStr & vbNewline
retStr = retStr & "组织是: " & Match. SubMatches(1)'第二个括号中的内容
SubMatchTest = retStr
End Function
document.write(SubMatchTest("请写信到 [url=mailto:dragon@xyzzy.com" target=_blank>dragon@xyzzy.com
。谢谢!"))
'如果在asp中使用请将document替换为response
在上面的这段代码中我们看到了对象Match和集合Matches的另外一种用法,由此可见所有的集合均可以用这种方法,就像实用数组一样。看完上面的代码有些朋友可能想到既然在属性Pattern中已经提供了$1$2.....$n这种方法,为什么还要存在集合SubMatches呢?实际上在我们使用证则表达式的时候可能搜索要匹配的内容或字符串很长,然而我们还要对搜索到匹配的字符串进行进一步的处理,而$又不能实现这个,于是便有了集合SubMatches。

到这里有关于VBScript的正则表达式的内容就全部说完了,上面的3个代码均可以放在<SCRIPT Language="VBScript"></SCRIPT>标签中使用也可以放在ASP中执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: