VBA之正则表达式(33)-- 网页表格提取数据

56 篇文章 2 订阅
49 篇文章 18 订阅

实例需求:示例数据如下所示。

<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行代码执行正则替换,并输出结果。


条条大路通罗马,有的时候正则替换比正则匹配更简洁。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值