第四章 正则表达式
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 正则表达式的代码格式
我是云飞扬,职场财会人员,愿与大家分享表格制作和数据统计分析的技巧与方法,希望大家的工作更便捷,更轻松!