一、 引言

在《第11.17节 Python 正则表达式扩展功能:命名组功能及组的反向引用》中老猿介绍了组匹配模式的命名组功能及引用组功能,这两者都是正则表达式的扩展功能,其实在re模块中正则表达式的扩展功能非常多,所有扩展功能都是在左括号后面跟问号“?”来表示,具体扩展功能是要看问号后面的字符来确认,如“P”表示组名相关扩展。

下面老猿将未介绍的主要正则表达式扩展功能在本节进行介绍,下面介绍的扩展功能中的“…”都表示一个合法的子模式正则表达式。

二、 (?#…) 注释

表示右括号前面的内容都是注释,正则表达式处理时将忽略这部分内容。

三、 (?aiLmsux) 内联标记

内联标记与《第11.2节 Python 正则表达式支持函数概览》介绍的参数flags搜索标记的作用是类似的。

内联标记中的“aiLmsux”为可以使用的标记字符集合,匹配时可以选择填入其中的一个或多个,这个搜索标记本身不匹配任何搜索串的内容,只是为了搜索控制的。这些字符与搜索标记的对应关系如下:

a: re.A ,表示只匹配ASCII字符

i: re.I ,表示匹配忽略大小写;

L: re.L ,表示语言依赖;

m: re.M ,多行模式;

s: re.S、re.DOTALL,点匹配全部字符;

u: re.U ,Unicode匹配,由于Python3都是Unicode匹配,因此该标记基本没有什么用;

x: re.X ,冗长模式,允许编写更友好的正则表达式。

这些标记可以组合使用,包含这些标记的正则表达式,可以免去了在 调用相关函数时传递 flag 参数。注意:标记应该在整个正则表达式字符串首位表示,是对整个正则表达式生效。

四、 (?:…)

正则括号组匹配模式的非捕获版本, 匹配在括号内的任何正则表达式,但该分组所匹配的子字符串 不能 在执行匹配后被获取或是之后在模式中被引用。

五、 (?(id/name)yes-pattern|no-pattern)条件性匹配

如果给定的 组序号 或 组名存在,将会去匹配 yes-pattern对应子正则表达式 ,否则就去匹配 no-pattern对应正则表达式,no-pattern 可选,也可以被忽略。

案例:

>>> re.search(r'(<)?(\w+@\w+(?:\.\w+)+)(?(1)>|$)','<LaoYuanPython@csdn.com>')
<re.Match object; span=(0, 24), match='<LaoYuanPython@csdn.com>'>
>>> re.search(r'(<)?(\w+@\w+(?:\.\w+)+)(?(1)>|$)','(LaoYuanPython@csdn.com')
<re.Match object; span=(1, 23), match='LaoYuanPython@csdn.com'>
>>> re.search(r'(<)?(\w+@\w+(?:\.\w+)+)(?(1)>|$)','(LaoYuanPython@csdn.com)')
>>> re.search(r'(<)?(\w+@\w+(?:\.\w+)+)(?(1)>)','(LaoYuanPython@csdn.com)')
<re.Match object; span=(1, 23), match='LaoYuanPython@csdn.com'>

上述正则表达式正常匹配的含义是:当组号1(匹配’<’)匹配成功时,要求搜索串以”>”结束,当组号1未匹配时,要求域名后面不能有任何其他字符。

老猿Python,跟老猿学Python!

博客地址:https://blog.csdn.net/LaoYuanPython


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

第11.21节 Python 中正则表达式的其他扩展功能的更多相关文章

  1. 第11.20节 Python 中正则表达式的扩展功能:后视断言、后视取反

    一. 引言 在<第11.19节 Python 中正则表达式的扩展功能:前视断言和前视取反>中老猿介绍了前视断言和前视取反,与二者对应的还有后视断言和后视取反. 二. (?<=-)后视 ...

  2. 第11.19节 Python 中正则表达式的扩展功能:前视断言和前视取反

    一. 引言 在<第11.16节 Python正则元字符"()"(小括号)与组(group)匹配模式>中老猿介绍了组匹配模式的命名组功能及引用组功能,这两者都是组模式的扩 ...

  3. 第11.23节 Python 中re模块的搜索替换功能:sub及subn函数

    一. 引言 在<第11.3节 Python正则表达式搜索支持函数search.match.fullmatch.findall.finditer>重点介绍了几个搜索函数,除了搜索,re模块也 ...

  4. 第11.22节 Python 中re模块的字符串分割器:split函数

    一. 引言 在<第11.2节 Python 正则表达式支持函数概览>介绍了re模块的主要函数,在<第11.3节 Python正则表达式搜索支持函数search.match.fullm ...

  5. 第11.18节 Python 中re模块的匹配对象

    匹配对象是Python中re模块正则表达式匹配处理的返回结果,用于存放匹配的情况.老猿认为匹配对象更多的应该是与组匹配模式的功能对应的,只是没有使用组匹配模式的正则表达式整体作为组0. 为了说明下面的 ...

  6. 第11.24节 Python 中re模块的其他函数

    一. re.compile函数 正则表达式编译函数,在后面章节专门介绍. 二. re.escape(pattern) re.escape是一个工具函数,用于对字符串pattern中所有可能被视为正则表 ...

  7. 第8.21节 Python中__lt__、__gt__等 “富比较”(“rich comparison”)方法用途探究

    一. 富比较方法 Python的基类object提供一系列可以用于实现同类对象进行"比较"的方法,可以用于同类对象的不同实例进行比较.他们也是实例方法,定义如下: object.l ...

  8. 第8.23节 Python中使用sort/sorted排序与“富比较”方法的关系分析

    一. 引言 <第8.21节 Python中__lt__.gt__等 "富比较"("rich comparison")方法用途探究>和<第8.2 ...

  9. 第11.13节 Python正则表达式的转义符”\”功能介绍

    为了支持特殊元字符在特定场景下能表示自身而不会被当成元字符进行匹配出来,可以通过字符集或转义符表示方法来表示,字符集表示方法前面在<第11.4节 Python正则表达式搜索字符集匹配功能及元字符 ...

随机推荐

  1. 08flask中get和post请求。

    1,get请求. 使用场景:获取信息并没有对服务器的数据或者资源进行修改,则用get. 传参:get请求传参是放在URL中,通过"?"的形式指定键值对. 2,post请求. 使用场 ...

  2. TPE-ThreadPoolExecutor

    TPE: java.util.concurrent.ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximum ...

  3. spring处理静态资源方式

    1. <mvc:default-servlet-handler/>default-servlet-handler在SpringMVC上下文定义一个org.springframework.w ...

  4. 使用KepServerEx进行数据模拟

    KepServerEx是一款在工业控制中比较常见的数据采集服务软件之一,提供了多种类型的驱动,具有比较广泛的适用性.很多厂商和个人都会选择用它来做OPCServer.在项目的实施或测试过程中,我们有时 ...

  5. Vue + WebRTC 实现音视频直播(附自定义播放器样式)

    1. 什么是WebRTC 1.1 WebRTC简介 WebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频 ...

  6. OpenCV之图像归一化(normalize)

    什么图像归一化 通俗地讲就是将矩阵的值通过某种方式变到某一个区间内 图像归一化的作用 目前能理解的就是归一化到某个区间便于处理,希望高人可以指点 opencv文档中的介绍 C++: void norm ...

  7. TCP回射客户服务器模型(02 设置套接字选项、处理多并发)

    int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);  //设置套接字选项 ...

  8. UNP——第六章,多路转接IO——select

    int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); ...

  9. 一:JavaWeb

    1.javaWeb技术体系 2.HTMl 超文本标记语言 (超文本的意思就是除了可以包含文字之外,还可以包含图片链接音乐视频等...) 2.1 HTML网页的组成  (结构:HTML 表现:CSS 行 ...

  10. tomcat设置好环境变量,依然无法通过cmd startup命令启动

    Windows环境下JDK安装与环境变量配置详细的图文教程 https://www.cnblogs.com/liuhongfeng/p/4177568.html   Windows环境下maven 环 ...