正则表达式之量词
Posted 鹏哥工作室之office
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式之量词相关的知识,希望对你有一定的参考价值。
前面章节我们见识了正则表达式中元字符的强大,但有时候我们想要匹配的字符串有长度的要求,正则表达式中的量词就是专门为解决这个问题而生的。
正则表达式中的量词如下:
? 匹配前面的子表达式零次或一次。
+ 匹配前面的子表达式一次或多次。
* 匹配前面的子表达式零次或多次。
{n}n 是一个非负整数。匹配确定的n次。
{n,} n是一个非负整数。匹配确定的n次。
{n,m} n和m均为非负整数,其中n<=m。匹配前面子表达式最少n次,最多m次。
我们通过具体的案例来体会下:
案例一:
图中B列数据姓名之间有的有换行符,有的没有,有的有多个换行符,有的只有一个,我们希望把他梳理成右边的格式。
我们只要匹配出每个单元格中的汉字,至少两个字,因为姓名之间有换行符,所以用"\S{2,}"就能匹配出每个姓名来。
代码如下:
Sub 规范格式()
Dim regx As Object, mat, n%, k, rng
Set regx = CreateObject("vbscript.regexp")
With regx
.Global = True
.Pattern = "\S{2,}"
For Each rng In [b2:b5]
Set mat = .Execute(rng)
For Each k In mat
n = n + 1
Cells(rng.Row, n + 2) = k
Next
n = 0
Next
End With
End Sub
当然我们也可以写成.Pattern = "\S+"。
案例二:
把原数据中的“-”统一成两个。
匹配“-”至少两次
代码如下:
Sub 规范格式1()
Dim regx As Object, rng
Set regx = CreateObject("vbscript.regexp")
With regx
.Global = True
.Pattern = "-{2,}"
End With
For Each rng In [a2:a7]
Cells(rng.Row, 2) = regx.Replace(rng.Value, "--")
Next
End Sub
案例三:
这是前几天一位群友问我的问题,把原数据中连续的8位数字提取出来。
代码如下:
Sub 规范格式2()
Dim regx As Object, mat, n%, k, rng
Set regx = CreateObject("vbscript.regexp")
With regx
.Global = True
.Pattern = "\d{8}"
For Each rng In [a2:a5]
Set mat = .Execute(rng)
For Each k In mat
n = n + 1
Cells(rng.Row, n + 1) = k
Next
n = 0
Next
End With
End Sub
通过上面三个例子,大家应该多量词有所了解了吧!
今天的分享就到这里了!
后台回复下列红色关键词可以获取相关资源:
1、office365, office 365, 365,可以获取office365版本
2、excel学习, Excel学习,可以获取相关的学习资料
3、VBA学习,可以获取相关的学习资料
4、excel扩展,可以获取excel扩展工具,能让excel更加高效方便的工作
5、百度云破解限速,可以获取相关软件
6、PPT模板, ppt模板,可以获取相关资源
7、快查手册,可以获取函数快查手册
8、微信清粉, 清粉,可以获取微信僵尸粉清理软件
注意是后台回复,不是留言区回复,而且回复的关键字必须跟上面的关键字一样,注意大小写,空格之类。
长按识别下方二维码关注,
后台菜单中有更多精彩内容等着你!
苹果用户可通过下方二维码赞赏!
觉得不错请点赞!!!
以上是关于正则表达式之量词的主要内容,如果未能解决你的问题,请参考以下文章
在 JavaScript 正则表达式中使用 1+ 所有格量词时出现正则表达式错误