【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
代码运行过程演示
相关推荐
yong9990几秒前
EKF-SLAM在MATLAB上的仿真实现
开发语言·matlab
广州山泉婚姻3 分钟前
C语言三种基本程序结构详解
c语言·开发语言
上弦月-编程7 分钟前
【C语言】函数栈帧的创建与销毁(底层原理)
c语言·开发语言
eqwaak010 分钟前
PyTorch张量操作全攻略:从入门到精通
开发语言·人工智能·pytorch·python
辞旧 lekkk11 分钟前
【Qt】初识(上)
开发语言·数据库·qt·学习·萌新
格林威13 分钟前
线阵工业相机:如何计算线阵相机的行频(Line Rate)?公式+实例
开发语言·人工智能·数码相机·算法·计算机视觉·工业相机·线阵相机
Chasing Aurora14 分钟前
python 安装依赖和导入模块 详解
开发语言·python·虚拟环境·import·pyenv·requirements
近津薪荼17 分钟前
C++ vector容器底层深度剖析与模拟实现
开发语言·c++
木易 士心17 分钟前
为什么 Promise 比 setTimeout 先执行?——JavaScript 事件循环与异步顺序完全指南
开发语言·javascript·ecmascript
海清河晏11118 分钟前
数据结构 | 链式队列
开发语言·数据结构·链表