正则表达式提供了一种非常强大的方法,可以使用复杂的搜索条件搜索和替换字符串中的文本,远远落后于 VB 的 InStr 和 Replace 函数的功能。例如,您可以搜索整个单词,或查找具有字符范围(例如,数字或任何大写字符)的匹配项,并且可以快速查找和计算搜索字符串的所有出现次数。正则表达式对于许多编程任务非常重要,以至于至少有几种编程语言 - Awk 和 Perl - 它们的主要目的是让正则表达式可供开发人员使用。
如果您安装了 VBScript 版本 5 或更高版本(它会自动随任何版本的 Microsoft Internet Explorer 从 4.0 版开始安装),则可以利用它附带的强大正则表达式引擎。此引擎可供所有 VBScript 开发人员使用(例如,从 Windows 脚本主机和活动服务器页面应用程序中),甚至可供 Visual Basic 开发人员使用。要在 VB 应用程序中使用此正则表达式引擎,您只需添加对 Microsoft VBScript 正则表达式类型库的引用即可。
类型库中的主要对象是 RegExp 对象,它表示正则表达式模式。模式标识您正在搜索的文本。您可以在模式中使用多个特殊字符来搜索字符类别(例如符号或非数字)或指定搜索字符串应在文本中出现的位置(例如,在单词的开头或行尾之前)。要充分利用正则表达式,您必须学习如何使用这些特殊的字符序列,这项工作可能非常艰巨,远远超出了这个简单提示的范围,它只是介绍使用正则表达式类型库。
RegExp 对象的主要属性是 Pattern,您可以在创建对象后立即将正则表达式模式分配给该属性。还可以将 IgnoreCase 属性设置为 True 或 False,具体取决于是否要执行不区分大小写的搜索。另一个重要属性是 Global,如果要查找模式的所有匹配项,则应将其设置为 True,如果只想测试模式是否至少包含在源字符串中一次,则应将其设置为 False。最后,Execute 方法采用源字符串(即在其中搜索模式的字符串)并返回 Match 对象的集合。每个 Match 对象表示模式的出现,并公开 Value (找到的出现项) 、 Length (出现项中的字符数) 和 FirstIndex (出现项在源字符串中的位置) 等属性。
作为如何使用 RegEx 对象的示例,以下代码搜索所有出现的大写字符后跟三位数字:
' NOTE: this code requires a reference to the
' Microsoft VBScript Regular Expression type library
'
Dim re As New RegExp
Dim ma As Match
re.Pattern = "[A-Z][0-9][0-9][0-9]" ' uppercase char followed by 2 digits
re.IgnoreCase = False ' case sensitive search
re.Global = True ' find all the occurrences
For Each ma In re.Execute(txtSource.Text)
Print "Found '" & ma.Value & "' at index " & ma.FirstIndex
Next
因为特殊的 \d reqular 表达式序列表示“数字字符”,所以上面示例中的 Pattern 属性也可以按如下方式分配:
re.Pattern = "[A-Z]\d\d\d"
有关可与 RegEx 对象一起使用的正则表达式语法的其他信息,请参阅 VBScript 附带的文档,并在 MSDN Online 上进行搜索。