前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >全网最易懂的正则表达式教程(7)- 环视

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

作者头像
小菠萝测试笔记
发布2020-07-03 10:18:02
4420
发布2020-07-03 10:18:02
举报
文章被收录于专栏:自动化、性能测试

前言

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

什么时候用环视?

通过一个栗子来讲解

需求

邮政编码的规则是第一位是 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)

  • 即 也可以写成 (?<!\w)\w+(?!\w)

\b\w+\b

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

环视与分组

  • 环视和分组都有

( )

  • 但环视只匹配位置,不匹配文本内容
  • 而分组是为了将匹配到的文本内容用于后续的操作
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-07-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 什么时候用环视?
    • 需求
      • 最朴实的正则
        • 测试
          • 环视解决问题
            • 通过环视来写邮编的正则
            • 表示单词边界 \b 用环视的方式如何写?
            • 环视与分组
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档