【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
代码运行过程演示
相关推荐
十五年专注C++开发20 分钟前
libuv:一个跨平台的C++异步 I/O 库
开发语言·c++·node.js·libuv·vlibuv
SuperEugene24 分钟前
前端 console 日志规范实战:高效调试 / 垃圾 log 清理与线上安全避坑|编码语法规范篇
开发语言·前端·javascript·vue.js·安全
程序员敲代码吗24 分钟前
USB-C接口深度测试:从Vconn到电压的全方位分析
c语言·开发语言
racerun33 分钟前
跳转链接批量解析工具 python
开发语言·python
qq_417695051 小时前
C++中的解释器模式
开发语言·c++·算法
pingan87871 小时前
试试 docx.js 一键生成 Word 文档,效果很不错
开发语言·前端·javascript·ecmascript·word
big_rabbit05021 小时前
java面试题整理
java·开发语言
刺客xs1 小时前
c++模板
java·开发语言·c++
weixin_537590452 小时前
《C程序设计语言》练习答案(练习1-5)
c语言·开发语言
阳光永恒7362 小时前
Python零基础入门全套资料包免费分享 | 从0到1系统学习路线(含课件+源码+实战案例)
开发语言·python·学习·编程入门·python教程·编程学习·免费资料