如何在vba中使用正则表达式?





正则表达式(Regular Expression)是指用约定规则的字符串去查找、匹配符合的结果。

这个“约定规则的字符串”被称为正则表达式的pattern

比如用字符串”[0-9]”查找所有数字,用字符串”[a-z]”查找所有小写字母。

由于正则表达式在查找、替换字符串操作中的巨大优势,所以很多计算机编程语言都支持正则表达式。

在vba中如果要使用正则表达式,需要创建CreateObject(“vbscript.regexp”)对象,或者添加VBScript Regular Expression 引用。如下图所示

1

正则表达式对象有以下属性

属性 作用
Global Global属性用来表示是否对所有字符串中满足规则的字符进行检索
还是只针对第一个出现的满足规则的字符
IgnoreCase IgnoreCase属性表示是否忽略大小写,也就是大小写是否视为一样
Pattern Pattern属性即为要对字符串进行检索的正则表达式的规则

有以下方法:

方法 作用
Test Test方法用来判断是否被查找的字符串含有满足正则表达式规则的部分
Replace Replace方法用来把被查找的字符串中满足正则表达式规则的部分替换为其它的字符
Execute Execute方法即对被查找的字符串执行查找操作,
它将返回一个Matches 集合,所有被查找到的字符串都是Matches 集合的元素。

如果要处理匹配到的每一个结果,可以遍历Matches 集合,通过Match对象的FirstIndex属性返回匹配结果在整个字符串数据中的位置,通过Match对象的Length属性返回匹配的字符串的长度。其中Matches集合还可以有子集合SubMatches

以下是一个通用的调用正则表达式的函数:

以下是一些常用的正则表达式pattern:

[0-9] 任意一个数字

[a-z] 任意一个小写字母

([0-9]+\,)*([0-9]+\,)*([0-9]+\,)*([0-9]+\,)*([0-9]+\,)*[0-9]+((\.[0-9]+)*) 表示任意的以千分位格式书写的数字(如4,101.87)

 

发表评论