第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
请大家多多支持,点赞、评论和加关注!谢谢!
第11.20节 Python 中正则表达式的扩展功能:后视断言、后视取反的更多相关文章
- 第11.19节 Python 中正则表达式的扩展功能:前视断言和前视取反
一. 引言 在<第11.16节 Python正则元字符"()"(小括号)与组(group)匹配模式>中老猿介绍了组匹配模式的命名组功能及引用组功能,这两者都是组模式的扩 ...
- 第11.21节 Python 中正则表达式的其他扩展功能
一. 引言 在<第11.17节 Python 正则表达式扩展功能:命名组功能及组的反向引用>中老猿介绍了组匹配模式的命名组功能及引用组功能,这两者都是正则表达式的扩展功能,其实在re模块中 ...
- 第11.23节 Python 中re模块的搜索替换功能:sub及subn函数
一. 引言 在<第11.3节 Python正则表达式搜索支持函数search.match.fullmatch.findall.finditer>重点介绍了几个搜索函数,除了搜索,re模块也 ...
- 第11.22节 Python 中re模块的字符串分割器:split函数
一. 引言 在<第11.2节 Python 正则表达式支持函数概览>介绍了re模块的主要函数,在<第11.3节 Python正则表达式搜索支持函数search.match.fullm ...
- 第11.18节 Python 中re模块的匹配对象
匹配对象是Python中re模块正则表达式匹配处理的返回结果,用于存放匹配的情况.老猿认为匹配对象更多的应该是与组匹配模式的功能对应的,只是没有使用组匹配模式的正则表达式整体作为组0. 为了说明下面的 ...
- 第8.20节 Python中限制动态定义实例属性的白名单:__slots__
一. 引言 按照<第7.10节 Python类中的实例变量定义与使用>.<第7.14节Python类中的实例方法解析>中的介绍,当定义了一个类,并且创建了该类的实例后,可以给该 ...
- 第11.24节 Python 中re模块的其他函数
一. re.compile函数 正则表达式编译函数,在后面章节专门介绍. 二. re.escape(pattern) re.escape是一个工具函数,用于对字符串pattern中所有可能被视为正则表 ...
- 第11.13节 Python正则表达式的转义符”\”功能介绍
为了支持特殊元字符在特定场景下能表示自身而不会被当成元字符进行匹配出来,可以通过字符集或转义符表示方法来表示,字符集表示方法前面在<第11.4节 Python正则表达式搜索字符集匹配功能及元字符 ...
- 第11.25节 Python正则表达式编译re.compile及正则对象使用
一. 引言 在<第11.2节 Python 正则表达式支持函数概览>介绍了re模块的主要函数,在<第11.3节 Python正则表达式搜索支持函数search.match.fullm ...
随机推荐
- leetcode116:search-for-a-range
题目描述 给出一个有序数组,请在数组中找出目标值的起始位置和结束位置 你的算法的时间复杂度应该在O(log n)之内 如果数组中不存在目标,返回[-1, -1]. 例如: 给出的数组是[5, 7, 7 ...
- knn-demo
from __future__ import print_functionfrom numpy import *# 导入科学计算包numpy和运算符模块operatorimport operatorf ...
- 激情的来源 Imagine how much you love it !
激情来自哪里?我想可能我找到了,精髓就在那个标题! 想象你有多么爱它!你就会爱上他,想象你有多么喜欢某一个东西,你很有可能就喜欢上他,着手去了解他,接触他. 如果带着这种想象状态的激情,工作和学习会有 ...
- Oracle guide_Spring2.5_CN_reference_pdf
http://www.oracle.com/pls/db112/homepage spring_CN.rar (3.1 MB) 下载次数: 2
- vscode remote wsl 的NoPermissions permission denied问题
在 wsl这个目录 code-insiders . 之后会报这个错 无法打开"wsl": Unable to read file (NoPermissions (FileSyst ...
- 调用外部接口支持https请求
1,创建RestTemplateConfig.java文件,内容如下: package com.htsec.monitor.internet.config;import com.htsec.monit ...
- 通过ceph-deploy安装不同版本ceph
之前有在论坛写了怎么用 yum 安装 ceph,但是看到ceph社区的群里还是有人经常用 ceph-deploy 进行安装,然后会出现各种不可控的情况,虽然不建议用ceph-deploy安装,但是既然 ...
- tcp黏包问题与udp为什么不黏包
1.先说下subprocess模块的用法,为了举个黏包的例子 # 通过一个例子 来认识网络编程中的一个重要的概念 # 所有的客户端执行server端下发的指令,执行完毕后,客户端将执行结果给返回给服务 ...
- 背包问题(动态规划 C/C++)
Description 卖方:这件商品14元 买方:给你20元 卖方:不好意思,我的零钱不够 买方:好吧,这是15元,剩的当小费 当到一个地方旅游时,如果你买东西的地方不支持信用,带零钱还是非常有用的 ...
- Perfview 分析进程性能
PerfView 概述: PerfView是一个可以帮助你分析CPU和内存问题的工具软件.它非常轻量级也不会入侵诊断的程序,在诊断过程中对诊断的程序影响甚微. Visual Studio自带的性能分析 ...