实例需求:待处理字符串如下,需要提取其中被标记颜色的部分,注意数字序号之后的符号有多种。
示例代码如下。
Sub Demo()
Dim strWord As String
Dim objRegExp As Object, objMH As Object
Set objRegExp = CreateObject("VBSCRIPT.REGEXP")
strWord = [a1]
With objRegExp
.Global = True
.MultiLine = True
.Pattern = "^\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
运行代码结果如下。
1.天棚基层处理
2、视天棚情况,腻子满刮一到两遍
3)白色乳胶漆2遍
4)其他
1-天棚基层处理
2>视天棚情况,腻子满刮一到两遍
3)白色乳胶漆2遍
4)其他
【代码解析】
第4行代码创建正则表达式对象。
第5行代码设置字符串变量,从A1单元格读取文本。
第8行代码设置多行匹配。
第9行代码设置匹配模式。
第10行代码执行正则匹配。
如果匹配成功,第12~14行代码使用For…Next循环结构在立即窗口中输出匹配结果。
正则表达式 | 说明 |
---|---|
^ | 匹配开始位置 |
\d | 匹配一个数字 |
.+ | 匹配一个或者多个任意字符 |
$ | 匹配结尾位置 |
刚看到这个需求,大家可能会去总结数字之后有几种不同的符号,然后使用类似于“[))]”的方式罗列出来,但是仔细观察一下,只要数字开头的行都需要提取,因此可以简化正则匹配模式为^\d.+$
,正则匹配模式其实就是在总结规律。