【Excel 扩展正则的能力】工作中赋予处理单元格文本的强大正则表达提取能力

文本提取处理领域,正则表达式是最为强大的存在,工作中Excel 是常用的小型数据采集,处理,分析的工具但本身不具备正则的能力,让Excel拥有正则的能力无疑是如虎添翼的能力。

方案

让正则作为函数内容的一部分,给这类业务正则直接命名一个函数名称,调用时直接访问和Excel 系统函数一样简单

函数自定义
vbnet 复制代码
RegexExtract(rng As Range, ByVal Pattern As String, Optional MatchIndex As Integer = 0, Optional IgnoreCase As Boolean = True) 
参数名称 简介
rng 需要提取文本的单元格
Pattern 正则表达式规则字符串,备注:用户根据场景自定义,比如\d+,表示提取连续字符串
MatchIndex 单元格中匹配成立的字符串集合中,取第几个,起始索引为 0,默认为 0
IgnoreCase 匹配规则属性设置,是否区分大小写,True 区分,False 不区分
Function Code
vbnet 复制代码
' 提取字符串中符合正则规则的内容
Function RegexExtract(rng As Range, ByVal Pattern As String, Optional MatchIndex As Integer = 0, Optional IgnoreCase As Boolean = True) As String
    
'    on error resume next
    
    Dim regEx As Object, matches As Object
    Set regEx = CreateObject("VBScript.RegExp")
    
    With regEx
        .Pattern = Pattern
        .IgnoreCase = IgnoreCase
        .Global = True
    End With
    
    Set matches = regEx.Execute(rng.Value)
    If matches.Count > 0 Then
    
        If MatchIndex < 0 Or MatchIndex >= matches.Count Then
            RegexExtract = "Index out of range"
        Else
            RegexExtract = matches(MatchIndex).Value
        End If

        
    Else
    
        RegexExtract = "No match"
        
    End If
    
    Set regEx = Nothing
    
End Function
代码运行过程演示
相关推荐
Elastic 中国社区官方博客12 分钟前
我们如何通过 70 多个拉取请求,将 OpenTelemetry Java agent 迁移到 invokedynamic
java·大数据·开发语言·elasticsearch·搜索引擎·全文检索·es
tyn18825 分钟前
记录本地安装nacos服务的方法及异常
java·开发语言
步行cgn1 小时前
Spring MVC 视图机制的核心接口与类
java·开发语言·后端·spring·mvc
传奇开心果编程2 小时前
【Rust入门练中学】第5课:引用与借用
开发语言·rust·引用·编程语言理论·通用编程语言·借用
qetfw2 小时前
Bash 变量:export、位置参数与默认值展开验证
linux·开发语言·chrome·bash
电子云与长程纠缠2 小时前
UE5魂系游戏开发教程05
开发语言·学习·游戏·ui·ue5
cspttty2 小时前
2027风险管理岗准备路线:数学与应用数学如何补齐金融、SQL与Python
开发语言·python·金融
我命由我123452 小时前
Python 开发 - Python 的 pathlib
java·开发语言·后端·python·学习·java-ee·学习方法
严谨的麻辣烫3 小时前
Python HTTP 连接池怎么用?从连接复用到请求异常排查
开发语言·python·http·requests·网络排查
码林鼠3 小时前
flutter状态管理入门教程-Riverpod
开发语言·javascript·flutter