实例需求:待处理文本如下,需要提取其中的价格(下图中红色字体文字),注意不提取其他数字。
示例代码如下。
Sub Demo()
Dim strWord As String
Dim objRegExp As Object, objMH As Object
Set objRegExp = CreateObject("VBSCRIPT.REGEXP")
strWord = Trim([a1])
With objRegExp
.Global = True
.ignoreCase = True
.Pattern = "[- =](\d{3,4})[^a-z]"
Set objMatch = .Execute(strWord)
If objMatch.Count > 0 Then
For Each objMH In objMatch
Debug.Print objMH.submatches(0)
Next
End If
End With
Set objRegExp = Nothing
End Sub
运行代码结果如下。
1860
2929
2499
2390
2658
980
【代码解析】
第4行代码创建正则表达式对象。
第5行代码设置字符串变量,从A1单元格读取文本。
第8行代码设置正则匹配忽略大小写。
第9行代码设置匹配模式。
第10行代码执行正则匹配。
如果匹配成功,第12~14行代码使用For…Next循环结构在立即窗口中输出匹配结果。
正则表达式 | 说明 |
---|---|
[- =] | 匹配减号、空格、等号 |
(\d{3,4}) | 匹配3位或者4位数字,作为提取组 |
[^a-z] | 匹配一个非英文字符 |