实例需求:待处理字符串如下。
changhong长虹智能电视 58M89 ppt
海尔Haier 58GT66C Max智能电视,
康佳LED58G3 pro
58英寸4K液晶电视机Konka 21K9S5
需要提取其中的规格。
示例代码如下。
Sub Demo1()
Dim strWord As String
Dim objRegExp As Object, objMH As Object
Set objRegExp = CreateObject("VBSCRIPT.REGEXP")
strWord = [A1]
With objRegExp
.Global = True
.ignoreCase = True
.Pattern = "\d{2}[a-z]+\d{1,2}[a-z\d]*"
Set objMatch = .Execute(strWord)
If objMatch.Count > 0 Then
For Each objMH In objMatch
Debug.Print objMH
Next
End If
End With
Set objRegExp = Nothing
End Sub
运行代码结果如下。
58M89
58GT66C
58G3
21K9S5
【代码解析】
第4行代码创建正则表达式对象。
第5行代码设置字符串变量,从A1单元格读取文本。
第8行代码设置正则匹配忽略大小写。
第9行代码设置匹配模式。
第10行代码执行正则匹配。
如果匹配成功,第12~14行代码使用For…Next循环结构在立即窗口中输出匹配结果。
正则表达式 | 说明 |
---|---|
\d{2} | 匹配两个数字 |
[a-z]+ | 匹配一个或者多个英文字母 |
\d{1,2} | 匹配一个或者两个数字 |
[a-z\d]* | 匹配零个或者多个英文字母或数字 |