实例需求:示例数据如下所示。
<td><a href="javascript:;" data-url="/gstdHb/queryInfo" data-param="{stdId:'46826'}" data-tempid="shb-info">电力变压器</a></td>
<td class="txt-nowrap">DL/T 1539-2016</td>
<td>1</td>
从示例数据提取名称、规格和数量
电力变压器
DL/T 1539-2016
1
方法1:
Sub Demo1()
Dim regExp As Object, regExpMHs As Object
Set regExp = CreateObject("vbscript.regExp")
regExp.Global = True
regExp.MultiLine = True
regExp.Pattern = ">([^<\r\n]+)<"
txt = [a1]
Set regExpMHs = regExp.Execute(txt)
For j = 0 To regExpMHs.Count - 1
Debug.Print regExpMHs(j).submatches(0)
Next
Set regExpMHs = Nothing
Set regExp = Nothing
End Sub
代码解析:
第3行代码创建正则表达式对象。
第4行代码设置全局匹配。
第5行代码设置多行匹配。
第6行代码设置匹配规则。
正则表达式 | 说明 |
---|---|
[^<\r\n]+ | 匹配一个或者多个非<\r\n 字符 |
>()< | 提取组之前为右尖括号,之后为左尖括号 |
第7行代码将数据保存在变量中。
第8行代码执行正则匹配。
第9~11行代码输出每个提取组中的第一个子匹配结果。
匹配结果如下图所示。
方法2:正则替换
Sub Demo2()
Dim regExp As Object, regExpMHs As Object
Set regExp = CreateObject("vbscript.regExp")
regExp.Global = True
regExp.MultiLine = True
regExp.Pattern = "<.*?>"
txt = [a1]
Debug.Print regExp.Replace(txt, "")
Set regExpMHs = Nothing
Set regExp = Nothing
End Sub
代码解析:
第6行代码设置匹配规则。
正则表达式 | 说明 |
---|---|
<.*?> | 尖括号内非贪婪匹配多个任意字符 |
第8行代码执行正则替换,并输出结果。
条条大路通罗马,有的时候正则替换比正则匹配更简洁。