一、 引言
在前面《第11.13节 Python正则表达式的转义符”\”功能介绍》介绍了正则表达式转义符'\',只不过当时作为转义符主要是用于在正则表达式中表示元字符自身的需要进行的转义。实际上,除了元字符使用转义符外,Python还支持由'\'和一个ASCII数字或ASCII字母字符组成的特殊序列,这些特殊代表特殊的含义。 如果'\'后面跟的字符不是ASCII数字或者ASCII字母,那么正则样式将直接匹配后面跟的字符,如’\$’ 匹配字符 ‘$’。

二、 特殊序列

  1. \number
    number表示一个ASCII数字,\number表示数字代表的组。正则表达式中每个括号是一个组,组从1开始编号。关于组和组号的介绍及案例请大家参考后续章节《第11.16节 Python正则元字符“()”(小括号)与组(group)匹配模式》、《第11.17节 Python 组匹配模式扩展的命名组功能及组的反向引用》。
    注意如果 number 的第一个数字是0, 或者 number 是三个八进制数,它将不会被看作是一个组的序号,而是一个八进制的数字。在 ‘[’ 和 ‘]’ 字符集合内,任何数字转义都被看作是数字字符。
  2. \A
    只匹配字符串开始, 该功能与match函数的功能基本相同,与脱字符“^”在多行模式(搜索标记中包含re.MULTILINE,关于搜索标记的含义请见《第11.2节 Python re模块函数概览》)处理不同,其他方面基本相同。
    例子:
>>> m=re.search(r'\A([A-Z][a-z]*) ([A-Z].*)','Learning Python with LaoYuan!')
>>> m.groups()
('Learning', 'Python with LaoYuan!')
>>>
  1. \b 匹配一个单词的边界
    \b 匹配一个单词的边界用于匹配一个单词的边界,本身匹配结果为空字符串,但用于分隔一个单词的左边界或右边界,当用于左边界时,表示匹配时其后面的字符是一个单词的开始,其前面不能有单词字符,当用于右边界时,表示正则表达式前面的单词至此结束,匹配时后面不能再有单词字符。
    例如:
>>> re.search(r'\bPython','LaoYuanPython accompanies you learning Python')
<re.Match object; span=(39, 45), match='Python'>
>>> re.search(r'Python\b','LaoYuanPython accompanies you learning Python')
<re.Match object; span=(7, 13), match='Python'>
>>>

由于“LaoYuanPython”中的“‘Python’”不是一个独立单词,前面还有单词字符,因此当要匹配左边界时不符合匹配条件,因此第一个语句匹配的是后面的“Python”,而第二个语句是右边界的匹配,此时“LaoYuanPython”后面没有单词字符,因此可以匹配。
\b本身匹配的是一个空字符串,即它解析时不占用字符串的字符。如:

>>> re.search(r'Python\b a','LaoYuanPython accompanies you learning Python')
<re.Match object; span=(7, 15), match='Python a'>
从上面例子可以看到\b并不影响后面的空格和字母a的匹配,即它没有消耗搜索字符,本身匹配的是空字符串。
  1. \B 匹配一个单词的非边界
    \B 匹配一个单词的非边界,即\B所在位置必须有一个单词字符,不能在词的开头或者结尾,其匹配结果本身为空字符串,不消耗搜索字符。如下面的例子,匹配的是后一个Python:
>>> re.search(r'\BPython','Learning Python with LaoYuanPython')
<re.Match object; span=(28, 34), match='Python'>
  1. \d匹配数字
    对于 字符串,匹配任何Unicode十进制数(就是在Unicode字符目录[Nd]里的字符)。这包括了 [0-9] ,和很多其他的数字字符。如果设置了 ASCII 标志,就只匹配 [0-9] 。
    对于字节码bytes类型:匹配任何十进制数,就是 [0-9]。
    案例:
re.search(r'(\d*)','123123一二三壹贰叁①②③123')
<re.Match object; span=(0, 6), match='123123'>
  1. \D匹配非数字
    匹配任何非十进制数字的字符。就是 \d 取非。 如果设置了 ASCII 标志,就相当于 [^0-9] 。

  2. \s匹配空白字符
    对于字符串str类型:匹配任何Unicode空白字符(包括 [ \t\n\r\f\v] ,还有很多其他字符,比如不同语言排版规则约定的不换行空格)。如果 ASCII 搜索标记被设置,就只匹配字符集 [ \t\n\r\f\v] 。
    对于字节码bytes类型:匹配ASCII中的空白字符,就是匹配字符集 [\t\n\r\f\v] 。

  3. \S 匹配非空白字符
    匹配任何非空白字符。就是 \s 取非。如果设置了 ASCII 标志,就相当于 [^ \t\n\r\f\v] 。

  4. \w 匹配词语字符
    对于 Unicode (str) 样式:
    匹配Unicode词语的字符,包含了可以构成词语的绝大部分字符,也包括数字和下划线。如果设置了 ASCII 标志,就只匹配 [a-zA-Z0-9_] 。
    对于8位(bytes)样式:
    匹配ASCII字符中的数字和字母和下划线,就是 [a-zA-Z0-9_] 。如果设置了 LOCALE 标记,就匹配当前语言区域的数字和字母和下划线。

  5. \W
    匹配任何非词语字符。是 \w 取非。如果设置了 ASCII 标记,就相当于 字符集[^a-zA-Z0-9_] 。如果设置了 LOCALE 标志,就匹配当前语言区域的 非 词语字符。

  6. \Z匹配字符串尾
    匹配字符串尾,就表示匹配串必须位于字符串结尾,该功能与元字符类似,但在多行模式下,Z不能支持识别非最后一行的行尾,而类似,但在多行模式下,\Z不能支持识别非最后一行的行尾,而类似,但在多行模式下,Z不能支持识别非最后一行的行尾,而可以。如:

>>> re.search(r'(\d*)\Z','123123一二三壹贰叁①②③123')
<re.Match object; span=(15, 18), match='123'>

三、 Python的其他转义符支持
正则表达式支持绝大部分Python的标准转义字符,包括:\a、\b、\f、\n、\r、\t、\u、\U、\v、\x、\,其中\b 被用于表示词语的边界,在字符集合内表示退格。

老猿Python,跟老猿学Python!
博客地址:https://blog.csdn.net/LaoYuanPython
请大家多多支持,点赞、评论和加关注!谢谢!

第11.15节 Python正则表达式转义符定义的特殊序列相关推荐

  1. 第11.9节 Python正则表达式的贪婪模式和非贪婪模式

    在使用正则表达式时,匹配算法存在贪婪模式和非贪婪模式两种模式,在<第11.8节 Pytho正则表达式的重复匹配模式及元字符"?". "*". " ...

  2. 第11.3节 Python正则表达式搜索支持函数search、match、fullmatch、findall、finditer

    一. 概述 re模块的函数search.match.fullmatch.findall.finditer都是用于搜索文本中是否包含指定模式的串,函数的参数都是一样的,第一个参数是模式串.第二个是搜索文 ...

  3. 第11.16节 Python正则元字符“()”(小括号)与组(group)匹配模式

    一. 什么是组 关于组匹配模式,Python官网上说得比较简单,也没有这个名词,只有组这个名词,老猿查了比较多的资料和做了相关测试之后才理解. 组匹配模式,就是在匹配的正则表达式中使用小括号" ...

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

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

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

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

  6. python中转义符的用法大全_Python中的各种转义符\n\r\t

    Python中属性和描述符的简单使用 Python的描述符和属性是接触到Python核心编程中一个比较难以理解的内容,自己在学习的过程中也遇到过很多的疑惑,通过google和阅读源码,现将自己的理解和 ...

  7. python正则表达式修饰符_python正则表达式,看完这篇文章就够了...

    今天讲什么? 今天以为大学同学微信聊,说最近在看我的公众号,她是国企汽车制造业的,但也要用python进行数据分析...之前看了往期的python字符串操作内容,里面说到了正则表达式,想学习一下... ...

  8. 第11.27节 Python正则小结:正则静,静则明,明则虚,虚则无为而无不为也

    正则表达式的章节到此就结束了,老猿现在觉得对我们这些身具程序猿基因特色的人来说,正则表达式应该是蛮可口的开胃小菜. 在写标题时,本来想写"正则表达式小结",后来想了想,百度了一下, ...

  9. python中转义符的用法_Python——转义符的使用及实例

    转义符\ 先上目录,1. 转义符的作用及常见转义符介绍 2. 转义符\r的使用(实例介绍) 转义符\r和Python中的end函数的连用 3. 转义符\n的使用(实例介绍) 4. 实例-单行展示文本进 ...

最新文章

  1. mysql insert 数据_MySQL-插入数据(INSERT)
  2. 思科服务器与交换机链接配置文件,使用思科S系列交换机上的配置迁移工具转换配置文件...
  3. Dubbo源码学习总结系列三 dubbo-cluster集群模块
  4. 【dfs】P1036 选数
  5. 将RGB值转换为灰度值的简单算法(转)
  6. CodeBlocks 20.03 配置 wxWidgets 3.1.4
  7. MFC 中屏蔽CDialog类窗体处理ESC和ESCAPE按键
  8. HttpURLConnection解析
  9. iOS开发之线程间的MachPort通信与子线程中的Notification转发
  10. ubuntu 18.10无法locate boot-repair
  11. C语言 结构体练习之投票
  12. linux 开机logo制作工具,linux开机logo制作
  13. oeasy教您玩转python - 008 - # ascii码表
  14. mysql数据库 uft8_unicode_ci是utf8吗_mysql utf8_unicode_ci与utf8_general_ci的区别
  15. 【计算机硬件系统设计(华科)——运算器设计(Logisim 实现)】
  16. 集合--1.集合的概念和结构
  17. JavaDay13 抽象类 、接口、多态
  18. 服务器入门/tomcat以及如何部署
  19. Windows预览体验计划空白等一些问题的解决办法
  20. unity 简单的吃豆豆项目

热门文章

  1. 如何使用等价类划分法编写测试用例
  2. IDEA 开发工具使用记录
  3. Milo源码解析(一)
  4. html圆点光晕特效,使用CSS3做出带有光晕流星旋转光环的效果
  5. 解决 Flask 网页不刷新的问题
  6. C# ActiveX控件开发_1494
  7. Docker小鲸鱼真可爱~(@^_^@)~
  8. golang list 删除添加元素
  9. fifa足球世界服务器正在维修,FIFA足球世界
  10. Collections.sort简介