zoukankan      html  css  js  c++  java
  • 全网最易懂的正则表达式教程(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) 

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

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

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

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

    环视与分组

    • 环视和分组都有 ( ) 
    • 但环视只匹配位置,不匹配文本内容
    • 而分组是为了将匹配到的文本内容用于后续的操作
  • 相关阅读:
    结对第一次—疫情统计可视化(原型设计)
    软工实践寒假作业(2/2)
    test
    软工实践寒假作业(1/2)
    json的基本用法
    个人作业——软件工程实践总结&个人技术博客
    个人作业——软件评测
    结对第二次作业——某次疫情统计可视化的实现
    寒假作业(2/2)— 疫情统计
    软工实践寒假作业(1/2)
  • 原文地址:https://www.cnblogs.com/poloyy/p/13219646.html
Copyright © 2011-2022 走看看