前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >正则表达式:断言(环视)

正则表达式:断言(环视)

作者头像
Exploring
发布2023-10-04 15:08:37
3180
发布2023-10-04 15:08:37
举报

在正则表达式中有如下四种断言(也称零宽度断言、环视):

1 顺序肯定环视1.1 匹配指定内容的左侧位置1.2 匹配数字前的小写英文单词部分1.3 校验字符串长度2 顺序否定环视3 逆序肯定环视4 逆序否定环视

1 顺序肯定环视

(?=Expression),顺序肯定环视,也称零宽度正先行断言

(1)先行,表示待校验的位置在左边,即校验的位置在Expression匹配的内容左侧。

(2)正,表示Expression描述的规则,匹配的是校验位置右侧的内容。

由此可以看出,断言是一种描述位置的字符,它指定的是符合(?=Expression)规则的位置

1.1 匹配指定内容的左侧位置

正则表达式:(?=\d{3})

(?=\d{3})表示校验的位置右侧是三个数字,所以匹配到的是c和1之间的位置。

1.2 匹配数字前的小写英文单词部分

正则表达式:([a-z]+)(?=\d+)

(?=\d+) 表示校验的位置右侧是数字。

1.3 校验字符串长度

正则表达式:(?=^.{5}$)(.*)

(?=^.{5}$)表示校验的位置右侧字符串长度为5,因为加了字符串开头和结尾的字符,所以这个表达式的作用是匹配长度为5的字符串。

如果将正则表达式写成:(?=^.{5}$),则匹配的是长度为5的字符串,其左侧的位置。

由上面例子可以看出,断言的作用就是指定一个位置,该位置的左侧(或右侧)内容需要满足Expression规则。由此可以推测出其他三种断言的使用方式。

2 顺序否定环视

(?!Expression),顺序否定环视,表示校验位置右侧的内容不匹配Expression规则。

示例的正则表达式:(?!.*\d{3}.*)(^.*$)

(?!.*\d{3}.*)表示校验位置右侧的内容中不包含三个连续的数字。

3 逆序肯定环视

(?<=Expression),逆序肯定环视,表示校验位置左侧的内容匹配Expression规则。

示例的正则表达式:(?<=\d{3})(.*$)

代码语言:javascript
复制
文本:abc123def
匹配到的内容:def

(?<=\d{3})表示校验位置左侧有三个连续的数字。这个表达式的作用是匹配三个连续数字右侧的内容。

4 逆序否定环视

((?<!Expression)),逆序否定环视,表示校验位置左侧的内容不匹配Expression规则。

示例的正则表达式:(?<!\d{2})([a-z]+)

代码语言:javascript
复制
文本:123def
匹配到的内容:ef

(?<!\d{2}),表示校验位置左侧不是两个连续的数字。这个表达式的作用是匹配字符串部分内容,这部分内容左侧不是两个连续的数字。

值得一提的是,VBA中通常使用的是VBScript正则(vbscript.regexp),不支持逆序环视

参考资料:

[1] VBA之正则表达式(9)-- 添加千分位(1/3)(https://blog.csdn.net/taller_2000/article/details/89784517

[2] 正则表达式在线测试 | 菜鸟工具 (runoob.com)(https://c.runoob.com/front-end/854/?optionGlobl=global

[3] 正则表达式(二):断言(/developer/article/1337736

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-10-02 08:20,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 数据处理与编程实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 顺序肯定环视
    • 1.1 匹配指定内容的左侧位置
    • 1.2 匹配数字前的小写英文单词部分
    • 1.3 校验字符串长度
    • 2 顺序否定环视
    • 3 逆序肯定环视
    • 4 逆序否定环视
    相关产品与服务
    腾讯云服务器利旧
    云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
    http://www.vxiaotou.com