vba正则表达式语法大全

admin 31 0

VBA (Visual Basic for Applications) 不直接支持正则表达式,但可以通过使用 Microsoft VBScript Regular Expressions 5.5 库来使用正则表达式。

以下是 VBA 中正则表达式的基本语法:

1. **模式匹配**:

* `.`:匹配任何单个字符(除了换行符)。

* `^`:匹配输入字符串的开始位置。

* `$`:匹配输入字符串的结束位置。

* `*`:匹配前面的子表达式零次或多次。

* `+`:匹配前面的子表达式一次或多次。

* `?`:匹配前面的子表达式零次或一次。

* `{n}`:n 是一个正整数,匹配确定的 n 次。

* `{n,}`:n 是一个正整数,至少匹配 n 次。

* `{n,m}`:m 和 n 均为正整数,最少匹配 n 次且最多匹配 m 次。

* `\d`:匹配任何数字,等价于 `[0-9]`。

* `\D`:匹配任何非数字字符,等价于 `[^0-9]`。

* `\s`:匹配任何空白字符,包括空格、制表符、换页符等等,等价于 `[\f\n\r\t\v]`。

* `\S`:匹配任何非空白字符。

* `\w`:匹配任何字母、数字或下划线字符,等价于 `[A-Za-z0-9_]`。

* `\W`:匹配任何非单词字符,等价于 `[^A-Za-z0-9_]`。

2. **预定义模式**:

* `\0`:匹配 NULL (U+0000) 字符,避免直接在模式中使用 NULL 字符。

* `\n`:在某些配置中,匹配换行符,最好避免使用此转义序列。

* `\r`:匹配回车符 (U+000D)。

* `\t`:匹配制表符 (U+0009)。

3. **边界**:

* `\b`:匹配一个单词边界(即字与空格间的位置)。

* `\B`:匹配非单词边界的位置。

4. **特殊字符**:

* `()`:分组和引用。

* `|`:或。

* `^`:取反(如果在一组中的第一个标记)。

* `$`:字符串的结尾或行的结尾(取决于模式配置)。

5. **忽略大小写**:在模式中添加 `(?i)` 可以使搜索不区分大小写,`(?i)hello world` 会匹配 "Hello World" 和 "hello world"。

6. **多行模式**:在模式中添加 `(?m)` 可以使模式多行匹配,这意味着 `.` 可以匹配换行符,模式 `(?m)^start.*end$` 会匹配任何以 "start" 开头并以 "end" 结尾的行,其中 "start" 和 "end" 之间可以包含其他行。

7. **修饰符**:VBA 中的正则表达式还支持一些修饰符来改变默认的行为,例如 `i`(忽略大小写)、`m`(多行模式)、`s`(使 `.` 匹配包括换行符在内的所有字符)和 `x`(忽略空白字符和注释),模式 `(?imx)hello world` 会使搜索不区分大小写、多行匹配、忽略空白字符和注释。