vba 正则表达式
什么是正则表达式?
正则表达式(Regular Expression),简称“regex”或“regexp”,用来描述字符串的模式,一种高效的文本匹配工具。通常被用于搜索、替换和分割操作。
vba 中的正则表达式
vba 自带了“Microsoft VBScript Regular Expressions” 库,可以使用正则表达式进行字符串匹配操作。
1. 创建正则表达式对象
Dim regEx As Object
Set regEx = CreateObject("vbscript.regexp")
2. 常用属性和方法
| 方法/属性 | 描述 |
|---|---|
| Pattern | 正则表达式模式字符串 |
| Global | 是否找到所有匹配项 |
| IgnoreCase | 是否忽略大小写 |
| MultiLine | 是否匹配多行 |
| 方法 | 描述 |
|---|---|
| Execute | 在指定字符串中执行正则表达式搜索 |
| Test | 测试指定字符串是否与正则表达式模式匹配 |
| Replace | 替换指定字符串中符合正则表达式模式的字符串 |
3. 具体用法示例
1. 匹配指定字符
Dim regEx As Object
Set regEx = CreateObject("vbscript.regexp")
regEx.Pattern = "world"
Debug.Print regEx.test("hello world") 'True
2. 匹配数字
Dim regEx As Object
Set regEx = CreateObject("vbscript.regexp")
regEx.Pattern = "[0-9]+"
Debug.Print regEx.test("有5个苹果") 'True
3. 匹配邮箱
Dim regEx As Object
Set regEx = CreateObject("vbscript.regexp")
regEx.Pattern = "^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$"
Debug.Print regEx.test("test@qq.com") 'True
4. 替换指定字符
Dim regEx As Object
Set regEx = CreateObject("vbscript.regexp")
Dim str As String
str = "hello 123 world"
regEx.Pattern = "[0-9]+"
Debug.Print regEx.Replace(str, "") 'hello world
4. 常见正则表达式模式
| 正则表达式 | 描述 |
|---|---|
| \d | 匹配数字 |
| \w | 匹配字母、数字、下划线 |
| \s | 匹配空格、制表符、换行符 |
| . | 匹配任意字符 |
| ^ | 匹配行首 |
| $ | 匹配行尾 |
| * | 匹配前一个字符 0 次或多次 |
| + | 匹配前一个字符 1 次或多次 |
| ? | 匹配前一个字符 0 次或 1 次 |
| {n} | 匹配前一个字符 n 次 |
| {n,m} | 匹配前一个字符 n – m 次 |
结论
vba 中的正则表达式库能够处理许多字符串操作,具有灵活高效,使用方法也相对简单。在字符串操作中,其功能不可替代,对于初学者而言可以先从基础开始,逐步深入了解。
极客笔记