当前位置: 首页 > 图文教程 > 脚本技术 > VBScript > VBS教程:正则表达式简介 -字符匹配

VBScript
一个最简单的vbs类实例代码
实用vbs提醒小程序
使用vbs下载文件的代码加强版
vbs病毒制作之一复制自身的vbs脚本
用vbs实现的exe2swf工具脚本代码
vbs更改3389远程桌面端口的脚本
用vbs实现的强制杀进程的脚本
用VBS脚本实现更换Windows Xp序列号的代码
vbs实现右键菜单中添加CMD HERE
用VBS脚本删除指定以外的文件或文件夹
用VBS记录客户机操作的代码
用vbs删除某些类型文件和磁盘空间报告的脚本
两个批量挂马vbs脚本代码
关于vbs WebBrowser导航问题
LCL.VBS 病毒源代码
用vbs实现向任何电子邮件发送邮件
用VBS检测Guest状态的脚本
用vbs实现的输入助手附使用方法
vbs base64 解密脚本代码
用vbs实现修改dns的网关脚本

VBScript 中的 VBS教程:正则表达式简介 -字符匹配


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 66 ::
收藏到网摘: n/a

字符匹配

句点 (.) 匹配一个字符串中任何单个的打印或非打印字符,除了换行符 (\n) 之外。下面的 Visual Basic Scripting Edition 正则表达式可以匹配 'aac'、'abc'、'acc'、'adc'如此等等,同样也可以匹配 'a1c'、'a2c'、a-c'以及 a#c':

/a.c/

等价的 VBScript 正则表达式为:

"a.c"

如果试图匹配一个包含文件名的字符串,其中句点 (.) 是输入字符串的一部分,则可以在正则表达式中的句点前面加上一个反斜杠 (\) 字符来实现这一要求。举例来说,下面的 Visual Basic Scripting Edition 正则表达式就能匹配 'filename.ext':

/filename\.ext/

对 VBScript 而言,等价的表达式如下所示:

"filename\.ext"

这些表达式仍然是相当有限的。它们只允许匹配任何单字符。很多情况下,对从列表中匹配特殊字符十分有用。例如,如果输入文字中包含用数字表示为Chapter 1, Chapter 2诸如此类的章节标题,你可能需要找到这些章节标题。

括号表达式

可以在一个方括号 ([ 和 ]) 中放入一个或多个单字符,来创建一个待匹配的列表。如果字符被放入括号中括起来,则该列表称为括号表达式。括号内和其他任何地方一样,普通字符代表其本身,也就是说,它们匹配输入文字中出现的一处自己。大多数特殊字符在位于括号表达式中时都将失去其含义。这里有一些例外:

  • ']' 字符如果不是第一项,则将结束一个列表。要在列表中匹配 ']' 字符,请将其放在第一项,紧跟在开始的 '[' 后面。
  • '\' 仍然作为转义符。要匹配 '\' 字符,请使用 '\\'。

括号表达式中所包含的字符只匹配该括号表达式在正则表达式中所处位置的一个单字符。下面的 Visual Basic Scripting Edition 正则表达式可以匹配 'Chapter 1'、'Chapter 2'、'Chapter 3'、'Chapter 4' 以及 'Chapter 5':

/Chapter [12345]/

在 VBScript 中要匹配同样的章节标题,请使用下面的表达式:

"Chapter [12345]"

请注意单词 'Chapter' 及后面的空格与括号内的字符的位置关系是固定的。因此,括号表达式只用来指定满足紧跟在单词 'Chapter' 和一个空格之后的单字符位置的字符集合。这里是第九个字符位置。

如果希望使用范围而不是字符本身来表示待匹配的字符,则可以使用连字符将该范围的开始和结束字符分开。每个字符的字符值将决定其在一个范围内的相对顺序。下面的 Visual Basic Scripting Edition 正则表达式包含了一个等价于上面所示的括号列表的范围表达式。

/Chapter [1-5]/

VBScipt 中相同功能的表达式如下所示:

"Chapter [1-5]"

如果以这种方式指定范围,则开始和结束值都包括在该范围内。有一点特别需要注意的是,在 Unicode 排序中起始值一定要在结束值之前。

如果想在括号表达式中包括连字符,则必须使用下述方法之一:

  • 使用反斜杠将其转义:
    [\-]
  • 将连字符放在括号列表的开始和结束位置。下面的表达式能匹配所有的小写字母和连字符:
    [-a-z][a-z-]
  • 创建一个范围,其中开始字符的值小于连字符,而结束字符的值等于或大于连字符。下面两个正则表达式都满足这一要求:
    [!--][!-~]

同样,通过在列表开始处放置一个插入符(^),就可以查找所有不在列表或范围中的字符。如果该插入符出现在列表的其他位置,则匹配其本身,没有任何特殊含义。下面的 Visual Basic Scripting Edition 正则表达式匹配章节号大于 5 的章节标题:

/Chapter [^12345]/

对 VBScript 则使用:

"Chapter [^12345]"

在上面所示的示例中,表达式将匹配第九个位置处除1, 2, 3, 4, or 5 之外的任何数字字符。因此, 'Chapter 7' 为一个匹配,同样 'Chapter 9' 也是如此。

上面的表达式可以使用连字符 (-) 表示。对 Visual Basic Scripting Edition 为:

/Chapter [^1-5]/

或者,对 VBScript 为:

"Chapter [^1-5]"

括号表达式的典型用法是指定对任何大写或小写字母字符或任何数字的匹配。下面的 Visual Basic Scripting Edition 表达式给出了这一匹配:

/[A-Za-z0-9]/

等价的 VBScript 表达式为:

"[A-Za-z0-9]"