VBS教程:正则表达式简介 -选择与编组_vbs

选择与编组

选择允许使用 '|' 字符来在两个或多个候选项中进行选择。通过扩展章节标题的正则表达式,可以将其扩充为不仅仅适用于章节标题的表达式。不过,这可没有想象的那么直接。在使用选择时,将匹配'|' 字符每边最可能的表达式。你可能认为下面的 Visual Basic Scripting Edition 和 VBScript 表达式将匹配位于一行的开始和结束位置且后跟一个或两个数字的 'Chapter' 或 'Section':

/^Chapter|Section [1-9][0-9]{0,1}$/"^Chapter|Section [1-9][0-9]{0,1}$"

不幸的是,真正的情况是上面所示的正则表达式要么匹配位于一行开始处的单词 'Chapter',要么匹配一行结束处的后跟任何数字的 'Section'。如果输入字符串为 'Chapter 22',上面的表达式将只匹配单词 'Chapter'。如果输入字符串为 'Section 22',则该表达式将匹配 'Section 22'。但这种结果不是我们此处的目的,因此必须有一种办法来使正则表达式对于所要做的更易于响应,而且确实也有这种方法。

可以使用圆括号来限制选择的范围,也就是说明确该选择只适用于这两个单词 'Chapter' 和 'Section'。不过,圆括号同样也是难处理的,因为它们也用来创建子表达式,有些内容将在后面关于子表达式的部分介绍。通过采用上面所示的正则表达式并在适当位置添加圆括号,就可以使该正则表达式既可以匹配 'Chapter 1',也可以匹配 'Section 3'。

下面的正则表达式使用圆括号将 'Chapter' 和 'Section' 组成一组,所以该表达式才能正确工作。对 Visual Basic Scripting Edition 为:

/^(Chapter|Section) [1-9][0-9]{0,1}$/

对 VBScript 为:

"^(Chapter|Section) [1-9][0-9]{0,1}$"

这些表达式工作正确,只是产生了一个有趣的副产品。在 'Chapter|Section' 两边放置圆括号建立了适当的编组,但也导致两个待匹配单词之一都被捕获供今后使用。由于在上面所示的表达式中只有一组圆括号,因此只能有一个捕获的 submatch。可以使用 VBScript 的Submatches 集合或者Visual Basic Scripting Edition 中RegExp 对象的 $1-$9 属性来引用这个子匹配。

有时捕获一个子匹配是所希望的,有时则是不希望的。在说明所示的示例中,真正想做的就是使用圆括号对单词 'Chapter' 或 'Section' 之间的选择编组。并不希望在后面再引用该匹配。实际上,除非真的是需要捕获子匹配,否则请不要使用。由于不需要花时间和内存来存储那些子匹配,这种正则表达式的效率将更高。

可以在正则表达式模式圆括号内部的前面使用 '?:'来防止存储该匹配供今后使用。对上面所示正则表达式的下述修改提供了免除子匹配存储的相同功能。对 Visual Basic Scripting Edition:

/^(?:Chapter|Section) [1-9][0-9]{0,1}$/

对 VBScript:

"^(?:Chapter|Section) [1-9][0-9]{0,1}$"

除了 '?:' 元字符,还有两个非捕获元字符用于称之为预查的匹配。一个为正向预查,用 ?= 表示, 在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串。一个为负向预查,用 '?!' 表示,在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串。

例如,假定有一个包含引用有 Windows 3.1、Windows 95、Windows 98 以及 Windows NT 的文档。进一步假设需要更新该文档,方法是查找所有对 Windows 95、Windows 98 以及 Windows NT 的引用,并将这些引用更改为 Windows 2000。可以使用下面的 Visual Basic Scripting Edition 正则表达式,这是一个正向预查,来匹配 Windows 95、Windows 98 以及 Windows NT:

/Windows(?=95 |98 |NT )/

在 VBScript 要进行同样的匹配可以使用下述表达式:

"Windows(?=95 |98 |NT )"

找到一个匹配后,紧接匹配到的文字(而不包括预查中使用的字符)就开始对下一次匹配的搜索。例如,如果上面所示的表达式匹配到 'Windows 98',则将从 'Windows' 而不是 '98' 之后继续查找。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索ai编组选择工具怎么用、编组选择工具、ai编组选择工具、ai中编组选择工具、vbs选择对话框,以便于您获取更多的相关知识。

时间: 2024-09-20 03:03:46

VBS教程:正则表达式简介 -选择与编组_vbs的相关文章

VBS教程:正则表达式简介 -后向引用_vbs

后向引用 正则表达式一个最重要的特性就是将匹配成功的模式的某部分进行存储供以后使用这一能力.请回想一下,对一个正则表达式模式或部分模式两边添加圆括号将导致这部分表达式存储到一个临时缓冲区中.可以使用非捕获元字符 '?:', '?=', or '?!' 来忽略对这部分正则表达式的保存. 所捕获的每个子匹配都按照在正则表达式模式中从左至右所遇到的内容存储.存储子匹配的缓冲区编号从 1 开始,连续编号直至最大 99 个子表达式.每个缓冲区都可以使用 '\n' 访问,其中 n 为一个标识特定缓冲区的一位

VBS教程:正则表达式简介 -非打印字符_vbs

非打印字符 有不少很有用的非打印字符,偶尔必须使用.下表显示了用来表示这些非打印字符的转义序列: 字符 含义 \cx 匹配由x指明的控制字符.例如, \cM 匹配一个 Control-M 或回车符. x 的值必须为 A-Z 或 a-z 之一.否则,将 c 视为一个原义的 'c' 字符. \f 匹配一个换页符.等价于 \x0c 和 \cL. \n 匹配一个换行符.等价于 \x0a 和 \cJ. \r 匹配一个回车符.等价于 \x0d 和 \cM. \s 匹配任何空白字符,包括空格.制表符.换页符等

VBS教程:方法-Add 方法(Dictionary)_vbs

Add 方法(Dictionary) 向 Dictionary 对象添加键和项目对. object.Add key, item 参数 object 必选项.应为 Dictionary 对象的名称. key 必选项.与添加的 item 相关的 key. item 必选项.与添加的 key 相关的 item. 说明 如果 key 已经存在,则会出现错误. 下面例子举例说明如何使用 Add 方法: Dim d '创建变量.Set d = CreateObject("Scripting.Dictiona

VBS教程:VBScript 基础-VBScript 过程_vbs

VBScript 过程 在 VBScript 中,过程被分为两类:Sub 过程和 Function 过程. Sub 过程 Sub 过程是包含在 Sub 和 End Sub 语句之间的一组 VBScript 语句,执行操作但不返回值.Sub 过程可以使用参数(由调用过程传递的常数.变量或表达式).如果 Sub 过程无任何参数,则 Sub 语句必须包含空括号 (). 下面的 Sub 过程使用两个固有的(或内置的)VBScript 函数,即 MsgBox 和 InputBox,来提示用户输入信息.然后

VBS教程:VBscript属性-FirstIndex 属性_vbs

FirstIndex 属性 返回在搜索字符串中匹配的位置. object.FirstIndex object 参数总是一个 Match 对象. 说明 FirstIndex 属性使用从零起算的偏移量,该偏移量是相对于搜索字符串的起始位置而言的.换言之,字符串中的第一个字符被标识为字符 0. 下面的例子说明了 FirstIndex 属性的用法: ~Function RegExpTest(patrn, strng) Dim regEx, Match, Matches         ' 建立变量. S

VBS教程:方法-AddFolders 方法(Folders)_vbs

AddFolders 方法(Folders) 向 Folders 集合添加新 Folder. object. Add(folderName) 参数 object 必选项.应为 Folders 集合的名称. folderName 必选项.要添加的新 Folder 名称. 说明 下面例子举例说明如何利用 Add 方法添加新文件夹: Sub AddNewFolder(path, folderName) Dim fso, f, fc, nf Set fso = CreateObject("Scripti

VBS教程:VBscript属性-Pattern 属性_vbs

Pattern 属性 设置或返回被搜索的正则表达式模式. object.Pattern [= "searchstring"] 参数 object 必选项.总是一个 RegExp 对象变量. searchstring 可选项的.被搜索的正则字符串表达式.它可能包含设置部分表格中的各种正则表达式字符. 设置 在书写正则表达式的模式时使用了特殊的字符和序列.下表描述了可以使用的字符和序列,并给出了实例. 字符 描述 \ 将下一个字符标记为特殊字符或字面值.例如"n"与字符

VBS教程:VBscript属性-IgnoreCase 属性_vbs

IgnoreCase 属性 设置或返回一个Boolean值,指明模式搜索是否区分大小写. object.IgnoreCase [= True | False ] Object 参数总是一个 RegExp 对象.如果搜索是区分大小写的,则 IgnoreCase 属性为 False:否则为 True.缺省值为 False. 说明 下面的代码说明了 IgnoreCase 属性的用法(改变赋予 IgnoreCase 属性的值以观察其效果): Function RegExpTest(patrn, strn

VBS教程:VBscript属性-Value 属性_vbs

Value 属性 返回在一个搜索字符串中找到的匹配的值或文本. object.Value object 参数总是一个 Match 对象. 说明 下列代码说明了 Value 属性的用法: Function RegExpTest(patrn, strng) Dim regEx, Match, Matches         ' 建立变量. Set regEx = New RegExp         ' 建立正则表达式. regEx.Pattern = patrn         ' 设置模式. r