zoukankan      html  css  js  c++  java
  • 第11.20节 Python 中正则表达式的扩展功能:后视断言、后视取反

    一、 引言
    在《第11.19节 Python 中正则表达式的扩展功能:前视断言和前视取反》中老猿介绍了前视断言和前视取反,与二者对应的还有后视断言和后视取反。

    二、 (?<=…)后视断言(lookbehind assertion)
    后视断言又称为正向后视断言、后视断定、后行断言等,与前视断言功能类似,只是前视断言是找匹配串的右边要与前视断言指定的模式匹配,而后视断言是找匹配串的左边要与后视断言指定的模式匹配。

    语法:(?<=…),其中…为一个子正则表达式

    例子:
    要使用后视断言查找Python前有LaoYuan的字符串:

    >>> re.search('(?<=LaoYuan)Python','Learning Python with LaoYuan,LaoYuanPython accompanies you to progress')
    <re.Match object; span=(36, 42), match='Python'>
    >>>
    

    注意:
    1、后视断言必须放在真正要匹配模式的左边,因为是在左边查找是否有字符串匹配后视断言要求;
    2、后视断言从匹配串反向往左边查找,如上例中先找到Python,再往左逐一匹配看是否有LaoYuan;
    3、后视断言的匹配模式中匹配的字符串必须是定长的,不能是可变长的,如不能使用{m,n}、*、+等重复匹配模式。

    三、 (?<!…)后视取反(negative lookbehind assertion)
    也称反向后视断言、负向后视断言等,后视取反与后视断言的关系与前视取反与前视断言的关系一样,是匹配串向左不能出现… 子正则表达式指定的样式。

    语法:(?<!…),其中…为一个子正则表达式

    例子:

    >>> re.search('(?<!LaoYuan)Python','Learning Python with LaoYuan,LaoYuanPython accompanies you to progress')
    <re.Match object; span=(9, 15), match='Python'>
    

    注意:
    1、后视取反必须放在真正要匹配模式的左边,因为是在左边查找是否不会出现指定模式的字符串;
    2、后视取反的匹配模式中匹配的字符串也必须是定长的,不能是可变长的,如不能使用{m,n}、*、+等重复匹配模式。

    老猿Python,跟老猿学Python!
    博客地址:https://blog.csdn.net/LaoYuanPython

    请大家多多支持,点赞、评论和加关注!谢谢!

  • 相关阅读:
    git学习02
    每日一记8.12
    git学习01
    每日一记8.7
    每日一记8.6
    spring boot使用tomcat启动
    每日一记8.1
    【学习笔记】HTML5 WebGL游戏引擎开发
    【转】使用 WebGL 进行 3D 开发,第 3 部分: 添加用户交互
    【转】使用 WebGL 进行 3D 开发,第 2 部分: 使用 WebGL 库以更少的编码做更多的事情
  • 原文地址:https://www.cnblogs.com/LaoYuanPython/p/13643619.html
Copyright © 2011-2022 走看看