• VBA之正则表达式(43)-- 从网页中提取指定数据


    实例需求:由网页中提取下图中颜色标记部分内容,网页中其他部分与此三行格式相同。

    在这里插入图片描述


    方法1

    Sub Demo()
        Dim objRegex As Object
        Dim inputString As String
        Dim objMatches As Object
        Dim objMatch As Object
        Set objRegex = CreateObject("VBScript.RegExp")
        objRegex.Pattern = "id=[^>]+|[^>]+&#[^<]+"
        objRegex.Global = True
        inputString = Cells(1,1).Value
        Set objMatches = objRegex.Execute(inputString)
        For Each objMatch In objMatches
            Debug.Print objMatch
        Next objMatch
    End Sub
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    【代码解析】
    第6行代码创建正则对象。
    第7行代码设置正则匹配模式。

    正则表达式说明
    id=[^>]+匹配以id=开头,后面跟一个或者多个除>之外的任意字符
    [^>]+&#[^<]+匹配以一个或者多个除>之外的任意字符开头,后面为&#,之后为一个或者多个除<之外的任意字符

    第8行代码设置正则全局匹配。
    第9~11行代码将待处理字符串保存在变量中。
    第12行代码执行正则匹配。
    第13~15行代码循环遍历匹配结果,第14行代码输出到立即窗口,结果如下图所示。
    在这里插入图片描述


    方法2

    使用常规正则匹配模式,此正则模式比较容易理解,不再讲解其含义。
    方法1中灵活使用了字符集[^……],限制非某字符,也就实现了以该字符为边界的效果,其匹配模式字符串更简洁。

    Sub Demo2()
        Dim objRegex As Object
        Dim inputString As String
        Dim objMatches As Object
        Dim objMatch As Object
        Set objRegex = CreateObject("VBScript.RegExp")
        objRegex.Pattern = "(id=""[^""]+"").*?(.*?)<\/text>"
        objRegex.Global = True
        inputString = Cells(1,1).Value
        Set objMatches = objRegex.Execute(inputString)
        For Each objMatch In objMatches
            Debug.Print "ID: " & objMatch.SubMatches(0)
            Debug.Print "Text: " & objMatch.SubMatches(1)
            Debug.Print "----------------"
        Next objMatch
    End Sub
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    在这里插入图片描述


    示例数据

    Байтайлақ
    
    Байтоғай
    
    Оразәлі
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    供应链管理的基本方法
    linux中断(中断一)
    剑指 Offer 27. 二叉树的镜像
    yarn资源配置及使用
    CVPR 2022 Best Paper -- Learning to Solve Hard Minimal Problems
    Weakmap详解
    NX二次开发-远程开发模式(客户端和服务端).Ner和Jave远程框架
    【软件工程】一文完全理解用例和用例图
    安装Fake UserAgent 库的方法最终解答!_Python库
    第七章 数学 2 AcWing 1545. 质因子
  • 原文地址:https://blog.csdn.net/taller_2000/article/details/133854890