四时宝库

程序员的知识宝库

学习VBA,报表做到飞 第四章 正则表达式 4.7 首尾匹配

第四章 正则表达式

4.7 首尾匹配

匹配行首:在正则表达式前面加乘方号^(不能放在[ ]里)

匹配行尾:在正则表达式后面加美元符$。

如:^\d+,只匹配在行首的数字

\d+$,只匹配在行尾的数字

在第二节 正则表达式的元字符和量词中,我们讲到了一个案例:

在55,76,1000,357,2500,12380中匹配4位数字:\d{4},有三个匹配结果:1000,2500,1238,其中数字12380被匹配到了1238。

现在我们加上首尾匹配,把正则表达式修改为^\d{4}$,这样12380就匹配不上了。(各位在正则表达式测试工具里测试的时候,需要一个数字一个数字的来匹配,否则会造成没有匹配结果。)


小程序:

把下表中的姓名提取出来,写到右边的单元格里。

钱大6498316,学生

赵二5678346,个体工商户

王小虎2395799,老师

李三7228663自由职业者

Sub 首尾匹配()

Dim reg As New RegExp

With reg

.Global = True

.Pattern = "^[一-龢]+"

For Each ss In Range("a1", Cells(Rows.Count, 1).End(xlUp))

ss.offset(0, 1) = .Execute(ss)(0)

Next

End With

End Sub

在这个表格里,因为姓名都在字符串的首端,所以用了行首匹配,这样只会匹配到姓名,而不会匹配到行尾的汉字。把匹配到的结果象数组一样提取出来,赋值给右边的单元格,最后得到如下结果:

钱大6498316,学生

钱大

赵二5678346,个体工商户

赵二

王小虎2395799,老师

王小虎

李三7228663自由职业者

李三


往期精彩回顾:

学习VBA,报表做到飞 第四章 正则表达式 4.6 排除匹配

学习VBA,报表做到飞 第四章 正则表达式 4.5 Replace与Test

学习VBA,报表做到飞 第四章 正则表达式 4.4 正则表达式的代码格式


我是云飞扬,职场财会人员,愿与大家分享表格制作和数据统计分析的技巧与方法,希望大家的工作更便捷,更轻松!

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接