Excel VBA 编程开发应用系列 (八)—正则表达式
本部分将对Excel VBA编程中所用到的正则表达式基础知识进行讲解,通过此部分的学习,你可以了解什么是正则表达式,它有哪些用处,正则表达式的属性和方法,以及怎样在VBA编程中开启正则表达式。最后通过一个实例来加深对上述知识的了解。
什么是正则表达式?
正则表达式(regularexpression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等.
正则表达式广泛用于VBA,Python等编程语言中,由于其功能的强大性和便利性,所以正则表达式在编程中得到普遍运用。
正则表达式可以干什么?
- 正则表达式可以对字符串进行复杂特定的查找和替换;
- 判定给定的字符串是否符合正则表达式的过滤逻辑(也称为“匹配”);
- 可以通过正则表达式,从字符串中获取我们想要的特定部分。
正则表达式由什么组成?
正则表达式也只一种字符串,包括:非打印字符,限定符和普通字符,特殊字符及定位符。
普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。
非打印字符也可以是正则表达式的组成部分。下表列出了表示非打印字符的转义序列:
所谓特殊字符,就是一些有特殊含义的字符:
限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有 * 或 + 或 ? 或 {n} 或 {n,} 或 {n,m} 共6种。
正则表达式的限定符有:
定位符使您能够将正则表达式固定到行首或行尾。它们还使您能够创建这样的正则表达式,这些正则表达式出现在一个单词内、在一个单词的开头或者一个单词的结尾。
Excel VBA 编程中开启正则表达式功能?
在VBA中,正则表达式是作为一个对象来处理的。也就是说,要使用正则,需要先定义一个正则对象。在VBA中有两种定义正则对象的方式。
- 在VBA窗口的菜单栏,依次点击工具->引用,然后在弹出窗口中,勾选 Microsoft VBScript Regular Expressions 5.5;
然后就可以用如下方式定义正则表达式:
- 直接在sub/function中,通过如下方式定义:
VBA 编程中,正则表达式的属性有哪些?
VBA编程中,正则表达式的方法有哪些?
如果要处理匹配到的每一个结果,可以遍历Matches 集合,通过Match对象的FirstIndex属性返回匹配结果在整个字符串数据中的位置,通过Match对象的Length属性返回匹配的字符串的长度。其中Matches集合还可以有子集合SubMatches。
VBA编程正则表达式实例
下面通过一个用正则表达式来验证输入的邮箱是否有效的例子来加深对正则表达式的理解,我们知道邮箱是由用户名@服务区域名 组成,邮箱的命名要符合如下规则:
- @之前必须有内容且只能是字母(大小写)、数字、下划线(_)、减号(-)、点(.);
- @和最后一个点(.)之间必须有内容且只能是字母(大小写)、数字、点(.)、减号(-),且两个点不能挨着;
- 最后一个点(.)之后必须有内容且内容只能是字母(大小写)、数字且长度为大于等于2个字节,小于等于6个字节。
根据上述邮箱的命名规则,我们可以编写正则表达式来判定用户输入的邮箱地址是否符合上述规则,即是否有效?编写的VBA代码如下:
用户界面及运行结果如下:
上面只讲述了VBA编程正则表达式的常用知识,读者只有在实际开发中需多加运用,才能熟练掌握,加油吧,骚年!