excel中用正则匹配_excel 中如何使用正则表达式函数提取或替换内容

本文介绍如何通过VBA在Excel中创建一个自定义函数,实现正则表达式的替换、判断和提取功能。VBA代码展示了如何设置正则表达式对象并处理不同操作,例如替换字符串、检查匹配以及提取匹配项。此外,还提供了一些常用的正则表达式示例,如提取数字、匹配邮箱地址和网址等。
摘要由CSDN通过智能技术生成

word中自带正则表达式,不过Excel中却没有内置。可以在VBA中定义一个正则表达式函数,然后Excel中就可以调用了。VBA代码如下(VBA高亮无效,凑合着看):

1.Function ExStr(Str As String, Parttern As String, ActionID As Integer, Optional RepStr As String = "")

2. Dim regex As Object

3. Set regex = CreateObject("vbscript.regexp")

4. With regex

5. .Global = True

6. .IgnoreCase = True

7. .MultiLine = True

8. .Pattern = Parttern

9. End With

10. Select Case ActionID

11. Case 1: '替换

12. ExStr = regex.Replace(Str, RepStr)

13. Case 2: '判断

14. ExStr = regex.test(Str)

15. Case 3: '提取

16. Dim matches As Object

17. Set matches = regex.Execute(Str)

18. For Each Match In matches

19. ExStr = ExStr & Match.Value

20. Next

21. End Select

22.End Function

'正则表达式 V2

'增加:完善注释

'函数ExStr功能,根据正则表达式,替换或判断或提取字符串

'参数 str 源字符串

'参数 Parttern 正则表达式字符串

'参数 ActionID

'函数功能

'1正则方法一,替换符合正则表达式的字符,可选参数RepStr为替换值

'2正则方法二 判断是否有符合正则表达式,有返回“TRUE”,无返回“FALSE”

'3正则方法三,提取符合正则表达式的字符

'参数 Repstr 指定替换的字符,可选项,默认为空

'附常用几个正则表达式

'第二个参数Parttern为正则表达式,按规则使用即可。使用该函数会自动得到匹配结果

'例如,要提取4位数,如下调用即可:=exStr(A1,"\d{4}",3)

'替换:=ExStr(B2,"\d{4}",1,"0713")

'判断:=ExStr(C2,"\d{4}",2)

'匹配4位数 \d{4}

'

'匹配中文字符 [\u4e00-\u9fa5]

'匹配双字节字符(包括汉字在内):[^\x00-\xff]

'匹配空白行的正则表达式:\n\s*\r

'匹配HTML标记的正则表达式:]*>.*?\1>|<.>

'匹配首尾空白字符的正则表达式:^\s*|\s*$ 可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

'匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

'匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*

'匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

'匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7} 匹配形式如 0511-4405222 或 021-87888822

'匹配腾讯QQ号:[1-9][0-9]{4,}

'匹配中国邮政编码:[1-9]\d{5}(?!\d)

'匹配身份证:\d{15}|\d{18}

'匹配ip地址:\d+\.\d+\.\d+\.\d+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值