全网最易懂的正则表达式教程(7)- 环视

正则详细教程系列可以看此链接的文章哦

https://www.cnblogs.com/poloyy/category/1796055.html

 

前言

  • 环视:可以理解成看看左边,再看看右边
  • 在正则中我们有时候也需要瞻前顾后,找准定位
  • 环视就是要求匹配部分的前面或后面要满足(或不满足)某种规则
  • 有些地方也称环视为零宽断言
  • 环视其实也是断言的一种方式

 

什么时候用环视?

通过一个栗子来讲解

 

需求

邮政编码的规则是第一位是 1-9,一共有 6 位数字组成。现在要求你写出一个正则,提取文本中的邮政编码

 

最朴实的正则

 [1-9]\d{5} 

 

测试
测试文本结果
012300不满足第一位是 1-9
130400 满足要求
465441 满足要求
4654000 长度过长
138001380002长度过长

 

可以发现:

7 位数的前 6 位也能匹配上,12 位数匹配上了两次,这显然是不符合要求的,它们并不是正常的邮政编码

所以,除了 6 位数的规则外,这 6 位数左边或右边都不能是数字

 

环视解决问题

 

记忆口诀

<看左边,没有<看右边,感叹号是非的意思

 

通过环视来写邮编的正则

 (?<!\d)[1-9]\d{5}(?!\d) 

这样就满足正常邮编的规则了

 

表示单词边界 \b 用环视的方式如何写?

  •  (?<!\w) 表示左边不能是单词组成字符,
  •  (?!\w) 右边不能是单词组成字符
  • 即  \b\w+\b  也可以写成  (?<!\w)\w+(?!\w) 

 

但并不推荐这样写,直接用 \b 写不香吗

 

环视与分组

  • 环视和分组都有 ( ) 
  • 但环视只匹配位置,不匹配文本内容
  • 而分组是为了将匹配到的文本内容用于后续的操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小菠萝测试笔记

来支持下测试小锅锅

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值