vba正则表达式判断是否匹配成功(如何使用VBA中正则表达式之元字符实现强大的匹配能力)
vba正则表达式判断是否匹配成功(如何使用VBA中正则表达式之元字符实现强大的匹配能力)\b 匹配一个单词边界,也就是指单词和空格间的位置\S 匹配任何非空白字符\w 匹配包括下划线的任何单词字符。[A-Za-z0-9_]\W 匹配任何非单词字符\s 匹配任何空白字符,包括空格、制表符、换页符等等
我们在查找时通常会用通配符“*”表示任意字符,在正则表达式中也有一些固定的字符,它们可以表达某一类型的字符,以实现强大的匹配能力 这就是元字符。
下面例举一些常用的元字符:(注意大小写之分)
\d 匹配一个数字字符
\D 匹配一个非数字字符
\w 匹配包括下划线的任何单词字符。[A-Za-z0-9_]
\W 匹配任何非单词字符
\s 匹配任何空白字符,包括空格、制表符、换页符等等
\S 匹配任何非空白字符
\b 匹配一个单词边界,也就是指单词和空格间的位置
\B 匹配非单词边界
\n 匹配一个换行符
\r 匹配一个回车符
\t 匹配一个制表符
. 匹配除"\n"之外的任何单个字符。
我们通过具体的例子来体会下这些元字符的作用:
一、\d 匹配一个数字字符演示效果
总结:在\d情况下,原数据中的数字不仅得到替换而且下划线也进行了消除。
代码如下:
Sub 演示VBA正则元字符匹配能力()
Dim regx As Object n%
‘Dim regx As Object声明regx为对象变量 n%声明你为整形变量 %为是Interger整型变量的简写符号.
Set regx = CreateObject("vbscript.regexp")
With regx
.Global = True ‘Global属性,指查找范围,true为全部查找,false只查找第一个
.Pattern = "\d" ' 下面例子中逐一替换即可
End With
Do
n = n 1
Cells(n 1 2).Value = regx.Replace(Cells(n 1 1).Value "")
‘Cells(n 1 2)中2指的是结果所在列.
Loop Until Cells(n 1 1).Value = ""
End Sub
二、\D 匹配一个非数字字符演示效果
总结:
2.1 在\D情况下,原数据除了数字以外的数值全部得到了替换而且下划线也进行了消除。
2.2 下划线上面没有数值的,下划线是按照所占据的英文状态下的空格逐一进行替换,有多少个空格就替换多少次,比如最后一行的长下划线就替换了14个空格。
代码如下:
Sub 演示VBA正则元字符匹配能力()
Dim regx As Object n%
‘Dim regx As Object声明regx为对象变量 n%声明你为整形变量 %为是Interger整型变量的简写符号.
Set regx = CreateObject("vbscript.regexp")
With regx
.Global = True ‘Global属性,指查找范围,true为全部查找,false只查找第一个
.Pattern = "\D" ' 下面例子中逐一替换即可
End With
Do
n = n 1
Cells(n 1 3).Value = regx.Replace(Cells(n 1 1).Value "")
‘Cells(n 1 3)中3指的是结果所在列.
Loop Until Cells(n 1 1).Value = ""
End Sub
三、\w 匹配包括下划线的任何单词字符演示效果。[A-Za-z0-9_]
总结:大小写字母、数字和空白下划线都进行了替换,有数值的下划线消失不见。
代码如下:
Sub 演示VBA正则元字符匹配能力()
Dim regx As Object n%
‘Dim regx As Object声明regx为对象变量 n%声明你为整形变量 %为是Interger整型变量的简写符号.
Set regx = CreateObject("vbscript.regexp")
With regx
.Global = True ‘Global属性,指查找范围,true为全部查找,false只查找第一个
.Pattern = "\w" ' 下面例子中逐一替换即可
End With
Do
n = n 1
Cells(n 1 4).Value = regx.Replace(Cells(n 1 1).Value "")
‘Cells(n 1 4)中4指的是结果所在列.
Loop Until Cells(n 1 1).Value = ""
End Sub
至此代码不再一一展示 只要改一下元字符运行即可看到效果.
四、\W 匹配任何非单词字符演示效果
总结:图文除字母、数字和空白数值的下划线以外的字符都进行了替换。
五、\s 匹配任何空白字符,包括空格、制表符、换页符等等
六、\S 匹配任何非空白字符
总结:从图中可以看出空白字符和换行符不会得到替换。
七、\b 匹配一个单词边界,也就是指单词和空格间的位置
总结:图中重色框线部分就是单词边界。
八、\B 匹配非单词边界
总结:所谓非单词边界是指非空英文单词字母之间,非空中文字符之间,非空数字之间,非英文字符和空格之间,两个(含)以上连续空格都是非单词边界。
九、\n 匹配一个换行符
总结:从图中可以看出换行符已经替换。
十、\r 匹配一个回车符
Excel中不能直接按回车换行,否则会自动跳转至下一个单元格。
十一、\t 匹配一个制表符
什么是制表符,请看下图:
制表符可以用来制作表格,它们在第9区。它们有:
制表符
┌ └ ┐ ┘ ─ │ ├ ┤ ┬ ┴ ┼
用它们可以制表(不用Excel),而且只要是宋体,在任何电脑上都可以观看。
制表符主要应用于word中。
十二、. 匹配除"\n"之外的任何单个字符。
总结:从上图中可以看出,除了换行符以外的所有字符都得到了替换。