单个字符匹配

字符 匹配
.   匹配任意字符(除了\n)
[...] 匹配字符集
\d/\D 匹配数字/非数字
\s/\S 匹配空白/非空白字符
\w/\W 匹配单词字符[a-zA-A0-9]

  1. In [8]: ma = re.match(r'.','b')
  2.  
  3. In [9]: ma.gro
  4. ma.group ma.groupdict ma.groups
  5.  
  6. In [9]: ma.group()
  7. Out[9]: 'b'
  8.  
  9. In [10]: ma = re.match(r'.','')
  10.  
  11. In [11]: ma.grou
  12. ma.group ma.groupdict ma.groups
  13.  
  14. In [11]: ma.group()
  15. Out[11]: ''
  16.  
  17. In [12]: clear
  18.  
  19. In [13]: ma = re.match(r'{.}','{a}')
  20.  
  21. In [14]: ma.group()
  22. Out[14]: '{a}'
  23.  
  24. In [15]: ma = re.match(r'{.}','{0}')
  25.  
  26. In [16]: ma.grou
  27. ma.group ma.groupdict ma.groups
  28.  
  29. In [16]: ma.group()
  30. Out[16]: '{0}'
  31.  
  32. In [17]: ma = re.match(r'{..}','{01}')
  33.  
  34. In [18]: ma.group()
  35. Out[18]: '{01}'
  36.  
  37. In [19]: ma = re.match(r'{[abc]}','{a}')
  38.  
  39. In [20]: ma.group()
  40. Out[20]: '{a}'
  41.  
  42. In [21]: ma = re.match(r'{[a-z]}','{d}')
  43.  
  44. In [22]: ma.group()
  45. Out[22]: '{d}'
  46.  
  47. In [23]: ma = re.match(r'{[a-zA-Z]}','{A}')
  48.  
  49. In [24]: ma.group()
  50. Out[24]: '{A}'
  51.  
  52. In [25]: ma = re.match(r'{[a-zA-Z0-9]}','{0}')
  53.  
  54. In [26]: ma.group()
  55. Out[26]: '{0}'
  56.  
  57. In [27]: ma = re.match(r'{[\w]}','{ }')
  58.  
  59. In [28]: ma
  60.  
  61. In [29]: ma = re.match(r'{[\W]}','{ }')
  62.  
  63. In [30]: ma
  64. Out[30]: <_sre.SRE_Match object; span=(0, 3), match='{ }'>
  65.  
  66. In [31]: ma.group()
  67. Out[31]: '{ }'
  68.  
  69. In [32]: ma = re.match(r'{[\W]}','{9}')
  70.  
  71. In [33]: ma.group()
  72. ---------------------------------------------------------------------------
  73. AttributeError Traceback (most recent call last)
  74. <ipython-input-33-7c62fc675aee> in <module>()
  75. ----> 1 ma.group()
  76.  
  77. AttributeError: 'NoneType' object has no attribute 'group'
  78.  
  79. In [34]: ma
  80.  
  81. In [35]: ma = re.match(r'[[\w]]','[a]')
  82.  
  83. In [36]: ma
  84.  
  85. In [37]: ma = re.match(r'\[[\w]\]','[a]')
  86.  
  87. In [38]: ma.group()
  88. Out[38]: '[a]'
  89.  
  90. In [39]: ma = re.match(r'\[[\w]\]','[0]')
  91.  
  92. In [40]: ma.group()
  93. Out[40]: '[0]'
  94.  
  95. In [41]:

多个字符匹配

字符 匹配
* 匹配前一个字符0次或者无限次
+ 匹配前一个字符1次或者无限次
? 匹配前一个字符0次或者1次
{m}/{m,n} 匹配前一个字符m次或者n次
*?/+?/?? 匹配模式变为非贪婪(尽可能少匹配字符)

  1. In [1]: import re
  2.  
  3. In [2]: ma = re.match(r'[A-Z][a-z]','Aa')
  4.  
  5. In [3]: ma.grou
  6. ma.group ma.groupdict ma.groups
  7.  
  8. In [3]: ma.group()
  9. Out[3]: 'Aa'
  10.  
  11. In [4]: ma = re.match(r'[A-Z][a-z]','A')
  12.  
  13. In [6]: ma
  14.  
  15. In [8]:
  16.  
  17. In [8]: ma = re.match(r'[A-Z][a-z]*','A')
  18.  
  19. In [9]: ma
  20. Out[9]: <_sre.SRE_Match object; span=(0, 1), match='A'>
  21.  
  22. In [10]: ma.group()
  23. Out[10]: 'A'
  24. In [12]: ma = re.match(r'[A-Z][a-z]*','Asdsdwqass')
  25.  
  26. In [14]: ma.
  27. ma.end ma.group ma.lastgroup ma.re ma.start
  28. ma.endpos ma.groupdict ma.lastindex ma.regs ma.string
  29. ma.expand ma.groups ma.pos ma.span
  30.  
  31. In [14]: ma.group()
  32. Out[14]: 'Asdsdwqass'
  33.  
  34. In [15]: ma = re.match(r'[A-Z][a-z]*','1Asdsdwqass')
  35.  
  36. In [16]: ma
  37.  
  38. In [17]: ma = re.match(r'[A-Z][a-z]*','Asd1sdwqass')
  39.  
  40. In [18]: ma.group()
  41. Out[18]: 'Asd'
  42.  
  43. In [19]: ma = re.match(r'[_a-zA-Z]+[_\w]*','')
  44.  
  45. In [20]: ma
  46.  
  47. In [21]: ma = re.match(r'[_a-zA-Z]+[_\w]*','_ht11')
  48.  
  49. In [22]: ma.group()
  50. Out[22]: '_ht11'
  51.  
  52. In [23]: ma = re.match(r'[1-9]?[0-9]','')
  53.  
  54. In [24]: ma.group()
  55. Out[24]: ''
  56.  
  57. In [25]: ma = re.match(r'[1-9]?[0-9]','')
  58.  
  59. In [26]: ma.group()
  60. Out[26]: ''
  61.  
  62. In [27]: ma = re.match(r'[1-9]?[0-9]','')
  63.  
  64. In [28]: ma.group()
  65. Out[28]: ''
  66.  
  67. In [29]: ma = re.match(r'[1-9]?[0-9]','')
  68.  
  69. In [30]: ma.group()
  70. Out[30]: ''
  71.  
  72. In [31]: ma = re.match(r'[1-9]?[0-9]','')
  73.  
  74. In [32]: ma.group()
  75. Out[32]: ''
  76.  
  77. In [33]: ma = re.match(r'[[a-zA-Z0-9]{6}','abc123')
  78.  
  79. In [34]: ma.group()
  80. Out[34]: 'abc123'
  81.  
  82. In [35]: ma = re.match(r'[[a-zA-Z0-9]{6}','abc1234')
  83.  
  84. In [36]: ma.group()
  85. Out[36]: 'abc123'
  86.  
  87. In [37]: ma = re.match(r'[[a-zA-Z0-9]{6}','abc1__')
  88.  
  89. In [38]: ma
  90.  
  91. In [39]: ma = re.match(r'[[a-zA-Z0-9]{6}@163.com','abc123@163.com')
  92.  
  93. In [40]: ma.group()
  94. Out[40]: 'abc123@163.com'
  95.  
  96. In [41]: ma = re.match(r'[[a-zA-Z0-9]{6,10}@163.com','abc1234@163.com')
  97.  
  98. In [42]: ma.grou
  99. ma.group ma.groupdict ma.groups
  100.  
  101. In [42]: ma.group()
  102. Out[42]: 'abc1234@163.com'
  103.  
  104. In [43]: ma = re.match(r'[0-9][a-z]*?','1bc')
  105.  
  106. In [44]: ma.group()
  107. Out[44]: ''
  108.  
  109. In [45]: ma = re.match(r'[0-9][a-z]*','1bc')
  110.  
  111. In [46]: ma.group()
  112. Out[46]: '1bc'

边界匹配

字符 匹配
^   匹配字符串开头
$ 匹配字符串结尾
\A/\Z 指定的字符串匹必须出现在开头/结尾

  1. In [48]: ma = re.match(r'[[a-zA-Z0-9]{6,10}@163.com','abc1234@163.comabc')
  2.  
  3. In [49]: ma.group()
  4. Out[49]: 'abc1234@163.com'
  5.  
  6. In [50]: ma = re.match(r'[[a-zA-Z0-9]{6,10}@163.com$','abc1234@163.comabc')
  7.  
  8. In [51]: ma
  9.  
  10. In [52]: ma = re.match(r'^[[a-zA-Z0-9]{6,10}@163.com$','abc1234@163.com')
  11. In [53]: ma.group()
  12. Out[53]: 'abc1234@163.com'
  13.  
  14. In [54]: ma = re.match(r'\Aimooc[\w]*','imoocpython')
  15.  
  16. In [55]: ma.group()
  17. Out[55]: 'imoocpython'
  18.  
  19. In [56]: ma = re.match(r'\Aimooc[\w]*','iimooc')
  20.  
  21. In [57]: ma.group()
  22. ---------------------------------------------------------------------------
  23. AttributeError Traceback (most recent call last)
  24. <ipython-input-57-7c62fc675aee> in <module>()
  25. ----> 1 ma.group()
  26.  
  27. AttributeError: 'NoneType' object has no attribute 'group'

分组匹配

字符 匹配
| 匹配左右任意一个表达式
(a,b) 括号中表达式作为一个分组
\<number> 引用编号为num的分组匹配到的字符串
(?P<name>) 分组起一个别名
(?P=name) 引用别名为name的分组匹配字符串

  1. In [59]: ma = re.match(r'abc|d','abc')
  2.  
  3. In [60]: ma.group()
  4. Out[60]: 'abc'
  5.  
  6. In [61]: ma = re.match(r'abc|d','d')
  7.  
  8. In [62]: ma.group()
  9. Out[62]: 'd'
  10.  
  11. In [63]: ma = re.match(r'[1-9]?\d$','')
  12.  
  13. In [64]: ma.group()
  14. Out[64]: ''
  15.  
  16. In [65]: ma = re.match(r'[1-9]?\d$','')
  17.  
  18. In [66]: ma.group()
  19. Out[66]: ''
  20.  
  21. In [67]: ma = re.match(r'[1-9]?\d$','')
  22.  
  23. In [68]: ma
  24.  
  25. In [69]: ma = re.match(r'[1-9]?\d$','')
  26.  
  27. In [70]: ma.group()
  28. ---------------------------------------------------------------------------
  29. AttributeError Traceback (most recent call last)
  30. <ipython-input-70-7c62fc675aee> in <module>()
  31. ----> 1 ma.group()
  32.  
  33. AttributeError: 'NoneType' object has no attribute 'group'
  34.  
  35. In [71]: ma = re.match(r'[1-9]?\d$|100','')
  36.  
  37. In [72]: ma.group()
  38. Out[72]: ''
  39.  
  40. In [73]: ma = re.match(r'[1-9]?\d$|100','')
  41.  
  42. In [74]: ma.group()
  43. Out[74]: ''
  44.  
  45. In [75]: ma = re.match(r'[\w]{4,6}@163.com','imooc@163.com')
  46.  
  47. In [76]: ma.group()
  48. Out[76]: 'imooc@163.com'
  49.  
  50. In [77]: ma = re.match(r'[\w]{4,6}@(163,123).com','imooc@163.com')
  51.  
  52. In [78]: ma = re.match(r'[\w]{4,6}@(163,123).com','imooc@123.com')
  53.  
  54. In [79]: ma.group()
  55. ---------------------------------------------------------------------------
  56. AttributeError Traceback (most recent call last)
  57. <ipython-input-79-7c62fc675aee> in <module>()
  58. ----> 1 ma.group()
  59.  
  60. AttributeError: 'NoneType' object has no attribute 'group'
  61.  
  62. In [80]: ma = re.match(r'[\w]{4,6}@(163|123).com','imooc@123.com')
  63.  
  64. In [81]: ma.group()
  65. Out[81]: 'imooc@123.com'
  66.  
  67. In [82]: ma = re.match(r'<[\w]+>','<book>')
  68.  
  69. In [83]: ma.group()
  70. Out[83]: '<book>'
  71.  
  72. In [84]: ma = re.match(r'<([\w]+>)','<book>')
  73.  
  74. In [85]: ma.group()
  75. Out[85]: '<book>'
  76.  
  77. In [86]: ma = re.match(r'<([\w]+>)\1','<book>')
  78.  
  79. In [87]: ma.groups()
  80. ---------------------------------------------------------------------------
  81. AttributeError Traceback (most recent call last)
  82. <ipython-input-87-f4e4ca66607d> in <module>()
  83. ----> 1 ma.groups()
  84.  
  85. AttributeError: 'NoneType' object has no attribute 'groups'
  86.  
  87. In [88]: ma = re.match(r'<([\w]+>)\1','<book>book>')
  88.  
  89. In [89]: ma.groups()
  90. Out[89]: ('book>',)
  91.  
  92. In [90]: ma.group()
  93. Out[90]: '<book>book>'
  94.  
  95. In [91]: ma = re.match(r'<([\w]+>\1','<book>book>')
  96.  
  97. In [3]: ma = re.match(r'<([\w]+>)[\w]+</\1','<book>python</book>')
  98.  
  99. In [4]: ma.group()
  100. Out[4]: '<book>python</book>'
  101.  
  102. In [5]: ma = re.match(r'<([\w]+>)[\w]+</\1','<book>python</book1>')
  103.  
  104. In [6]: ma
  105.  
  106. In [9]: ma = re.match(r'<(?P<mark>[\w]+>)[\w]+</(?P=mark)','<book>python</book>')
  107.  
  108. In [10]: ma.group()
  109. Out[10]: '<book>python</book>'

Python正则表达式语法的更多相关文章

  1. Python 正则表达式语法实例

  2. python 正则表达式语法

  3. Python 正则表达式模块 (re) 简介

    Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,和 Perl 脚本的正则表达式功能类似,使用这一内嵌于 Python 的语言工具,尽管不能 ...

  4. Python正则表达式 学习笔记

    python第一个正则表达式 1. import re : python正则表达式模块 2. 第一个正则表达式 re.compile(r'imooc') pattern.match('imooc py ...

  5. Python基础语法07--面向对象+正则表达式

    Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过 ...

  6. python正则表达式re

    Python正则表达式: re 正则表达式的元字符有. ^ $ * ? { [ ] | ( ).表示任意字符[]用来匹配一个指定的字符类别,所谓的字符类别就是你想匹配的一个字符集,对于字符集中的字符可 ...

  7. 比较详细Python正则表达式操作指南(re使用)

    比较详细Python正则表达式操作指南(re使用) Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 E ...

  8. python正则表达式 小例几则

    会用到的语法 正则字符 释义 举例 + 前面元素至少出现一次 ab+:ab.abbbb 等 * 前面元素出现0次或多次 ab*:a.ab.abb 等 ? 匹配前面的一次或0次 Ab?: A.Ab 等 ...

  9. Python基本语法初试

    编程环境: win7旗舰版 Python 3.2.2(default, Sep  4 2011,09:51:08) 代码来源:(Python菜鸟) 代码内容: Python基本的输出语句print(& ...

随机推荐

  1. windows下使用apache相关资料汇总

    1.Apache httpd.conf配置详解 https://www.cnblogs.com/langren1992/p/5160912.html 2.windows下使用apache经验总结 ht ...

  2. python语法基础-文件操作-长期维护

    ###############    python-简单的文件操作  ############### # python中文件的操作 # 文件操作的基本套路 # 1,打开文件,默认是是只读方式打开文件 ...

  3. ckeditor深入挖掘吃透

  4. springboot actuator监控笔记

    0 环境 系统:win10 编辑器:IDEA 1 概念 监控 管理自身信息(可以自定义) 的模块 2 文件配置 1 pom的配置 监控的添加 <dependency> <groupI ...

  5. Iterator迭代器解决[为何禁止在foreach内增删]

    迭代器的应用场景: 1.对集合进行增加删除,禁止使用foreach,循环的动态操作2.倒序遍历3.遍历循环 步入正题:为何禁止在foreach内进行增删? 先看一下代码: /**         *  ...

  6. OpenCV 特征描述

    #include <stdio.h> #include <iostream> #include "opencv2/core/core.hpp" #inclu ...

  7. LR及评分卡(未完成)

    主要分为如下内容: 一.线性回归 二.逻辑回归 三.逻辑回归评分卡流程 一.线性回归 二.逻辑回归 在线性回归的基础上引入了sigmoid函数,Logistic回归为什么要使用sigmoid函数 三. ...

  8. continuing|offensive

    the fact of something continuing for a long period of timewithout being changed or stopped 连续性,持续性,连 ...

  9. mysql 优化一

    从几个方面出发: ① 数据库设计② sql语句优化③ 数据库参数配置④ 恰当的硬件资源和操作系统 下面详细介绍: ① 数据库设计 通俗地理解三个范式,对于数据库设计大有好处.在数据库设计中,为了更好地 ...

  10. SQL中的子查询

    目录 WHERE子查询 HAVING子查询 FROM子查询 SELECT子查询 EXISIT子查询 查询薪资排名的员工信息(面试) z子查询就是将一个查询(子查询)的结果作为另一个查询(主查询)的数据 ...