Python正则表达式语法
单个字符匹配
| 字符 | 匹配 |
| . | 匹配任意字符(除了\n) |
| [...] | 匹配字符集 |
| \d/\D | 匹配数字/非数字 |
| \s/\S | 匹配空白/非空白字符 |
| \w/\W | 匹配单词字符[a-zA-A0-9] |
In [8]: ma = re.match(r'.','b') In [9]: ma.gro
ma.group ma.groupdict ma.groups In [9]: ma.group()
Out[9]: 'b' In [10]: ma = re.match(r'.','') In [11]: ma.grou
ma.group ma.groupdict ma.groups In [11]: ma.group()
Out[11]: '' In [12]: clear In [13]: ma = re.match(r'{.}','{a}') In [14]: ma.group()
Out[14]: '{a}' In [15]: ma = re.match(r'{.}','{0}') In [16]: ma.grou
ma.group ma.groupdict ma.groups In [16]: ma.group()
Out[16]: '{0}' In [17]: ma = re.match(r'{..}','{01}') In [18]: ma.group()
Out[18]: '{01}' In [19]: ma = re.match(r'{[abc]}','{a}') In [20]: ma.group()
Out[20]: '{a}' In [21]: ma = re.match(r'{[a-z]}','{d}') In [22]: ma.group()
Out[22]: '{d}' In [23]: ma = re.match(r'{[a-zA-Z]}','{A}') In [24]: ma.group()
Out[24]: '{A}' In [25]: ma = re.match(r'{[a-zA-Z0-9]}','{0}') In [26]: ma.group()
Out[26]: '{0}' In [27]: ma = re.match(r'{[\w]}','{ }') In [28]: ma In [29]: ma = re.match(r'{[\W]}','{ }') In [30]: ma
Out[30]: <_sre.SRE_Match object; span=(0, 3), match='{ }'> In [31]: ma.group()
Out[31]: '{ }' In [32]: ma = re.match(r'{[\W]}','{9}') In [33]: ma.group()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-33-7c62fc675aee> in <module>()
----> 1 ma.group() AttributeError: 'NoneType' object has no attribute 'group' In [34]: ma In [35]: ma = re.match(r'[[\w]]','[a]') In [36]: ma In [37]: ma = re.match(r'\[[\w]\]','[a]') In [38]: ma.group()
Out[38]: '[a]' In [39]: ma = re.match(r'\[[\w]\]','[0]') In [40]: ma.group()
Out[40]: '[0]' In [41]:
多个字符匹配
| 字符 | 匹配 |
| * | 匹配前一个字符0次或者无限次 |
| + | 匹配前一个字符1次或者无限次 |
| ? | 匹配前一个字符0次或者1次 |
| {m}/{m,n} | 匹配前一个字符m次或者n次 |
| *?/+?/?? | 匹配模式变为非贪婪(尽可能少匹配字符) |
In [1]: import re In [2]: ma = re.match(r'[A-Z][a-z]','Aa') In [3]: ma.grou
ma.group ma.groupdict ma.groups In [3]: ma.group()
Out[3]: 'Aa' In [4]: ma = re.match(r'[A-Z][a-z]','A') In [6]: ma In [8]: In [8]: ma = re.match(r'[A-Z][a-z]*','A') In [9]: ma
Out[9]: <_sre.SRE_Match object; span=(0, 1), match='A'> In [10]: ma.group()
Out[10]: 'A'
In [12]: ma = re.match(r'[A-Z][a-z]*','Asdsdwqass') In [14]: ma.
ma.end ma.group ma.lastgroup ma.re ma.start
ma.endpos ma.groupdict ma.lastindex ma.regs ma.string
ma.expand ma.groups ma.pos ma.span In [14]: ma.group()
Out[14]: 'Asdsdwqass' In [15]: ma = re.match(r'[A-Z][a-z]*','1Asdsdwqass') In [16]: ma In [17]: ma = re.match(r'[A-Z][a-z]*','Asd1sdwqass') In [18]: ma.group()
Out[18]: 'Asd' In [19]: ma = re.match(r'[_a-zA-Z]+[_\w]*','') In [20]: ma In [21]: ma = re.match(r'[_a-zA-Z]+[_\w]*','_ht11') In [22]: ma.group()
Out[22]: '_ht11' In [23]: ma = re.match(r'[1-9]?[0-9]','') In [24]: ma.group()
Out[24]: '' In [25]: ma = re.match(r'[1-9]?[0-9]','') In [26]: ma.group()
Out[26]: '' In [27]: ma = re.match(r'[1-9]?[0-9]','') In [28]: ma.group()
Out[28]: '' In [29]: ma = re.match(r'[1-9]?[0-9]','') In [30]: ma.group()
Out[30]: '' In [31]: ma = re.match(r'[1-9]?[0-9]','') In [32]: ma.group()
Out[32]: '' In [33]: ma = re.match(r'[[a-zA-Z0-9]{6}','abc123') In [34]: ma.group()
Out[34]: 'abc123' In [35]: ma = re.match(r'[[a-zA-Z0-9]{6}','abc1234') In [36]: ma.group()
Out[36]: 'abc123' In [37]: ma = re.match(r'[[a-zA-Z0-9]{6}','abc1__') In [38]: ma In [39]: ma = re.match(r'[[a-zA-Z0-9]{6}@163.com','abc123@163.com') In [40]: ma.group()
Out[40]: 'abc123@163.com' In [41]: ma = re.match(r'[[a-zA-Z0-9]{6,10}@163.com','abc1234@163.com') In [42]: ma.grou
ma.group ma.groupdict ma.groups In [42]: ma.group()
Out[42]: 'abc1234@163.com' In [43]: ma = re.match(r'[0-9][a-z]*?','1bc') In [44]: ma.group()
Out[44]: '' In [45]: ma = re.match(r'[0-9][a-z]*','1bc') In [46]: ma.group()
Out[46]: '1bc'
边界匹配
| 字符 | 匹配 |
| ^ | 匹配字符串开头 |
| $ | 匹配字符串结尾 |
| \A/\Z | 指定的字符串匹必须出现在开头/结尾 |
In [48]: ma = re.match(r'[[a-zA-Z0-9]{6,10}@163.com','abc1234@163.comabc')
In [49]: ma.group()
Out[49]: 'abc1234@163.com'
In [50]: ma = re.match(r'[[a-zA-Z0-9]{6,10}@163.com$','abc1234@163.comabc')
In [51]: ma
In [52]: ma = re.match(r'^[[a-zA-Z0-9]{6,10}@163.com$','abc1234@163.com')
In [53]: ma.group()
Out[53]: 'abc1234@163.com'
In [54]: ma = re.match(r'\Aimooc[\w]*','imoocpython')
In [55]: ma.group()
Out[55]: 'imoocpython'
In [56]: ma = re.match(r'\Aimooc[\w]*','iimooc')
In [57]: ma.group()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-57-7c62fc675aee> in <module>()
----> 1 ma.group()
AttributeError: 'NoneType' object has no attribute 'group'
分组匹配
| 字符 | 匹配 |
| | | 匹配左右任意一个表达式 |
| (a,b) | 括号中表达式作为一个分组 |
| \<number> | 引用编号为num的分组匹配到的字符串 |
| (?P<name>) | 分组起一个别名 |
| (?P=name) | 引用别名为name的分组匹配字符串 |
In [59]: ma = re.match(r'abc|d','abc') In [60]: ma.group()
Out[60]: 'abc' In [61]: ma = re.match(r'abc|d','d') In [62]: ma.group()
Out[62]: 'd' In [63]: ma = re.match(r'[1-9]?\d$','') In [64]: ma.group()
Out[64]: '' In [65]: ma = re.match(r'[1-9]?\d$','') In [66]: ma.group()
Out[66]: '' In [67]: ma = re.match(r'[1-9]?\d$','') In [68]: ma In [69]: ma = re.match(r'[1-9]?\d$','') In [70]: ma.group()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-70-7c62fc675aee> in <module>()
----> 1 ma.group() AttributeError: 'NoneType' object has no attribute 'group' In [71]: ma = re.match(r'[1-9]?\d$|100','') In [72]: ma.group()
Out[72]: '' In [73]: ma = re.match(r'[1-9]?\d$|100','') In [74]: ma.group()
Out[74]: '' In [75]: ma = re.match(r'[\w]{4,6}@163.com','imooc@163.com') In [76]: ma.group()
Out[76]: 'imooc@163.com' In [77]: ma = re.match(r'[\w]{4,6}@(163,123).com','imooc@163.com') In [78]: ma = re.match(r'[\w]{4,6}@(163,123).com','imooc@123.com') In [79]: ma.group()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-79-7c62fc675aee> in <module>()
----> 1 ma.group() AttributeError: 'NoneType' object has no attribute 'group' In [80]: ma = re.match(r'[\w]{4,6}@(163|123).com','imooc@123.com') In [81]: ma.group()
Out[81]: 'imooc@123.com' In [82]: ma = re.match(r'<[\w]+>','<book>') In [83]: ma.group()
Out[83]: '<book>' In [84]: ma = re.match(r'<([\w]+>)','<book>') In [85]: ma.group()
Out[85]: '<book>' In [86]: ma = re.match(r'<([\w]+>)\1','<book>') In [87]: ma.groups()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-87-f4e4ca66607d> in <module>()
----> 1 ma.groups() AttributeError: 'NoneType' object has no attribute 'groups' In [88]: ma = re.match(r'<([\w]+>)\1','<book>book>') In [89]: ma.groups()
Out[89]: ('book>',) In [90]: ma.group()
Out[90]: '<book>book>' In [91]: ma = re.match(r'<([\w]+>\1','<book>book>') In [3]: ma = re.match(r'<([\w]+>)[\w]+</\1','<book>python</book>') In [4]: ma.group()
Out[4]: '<book>python</book>' In [5]: ma = re.match(r'<([\w]+>)[\w]+</\1','<book>python</book1>') In [6]: ma In [9]: ma = re.match(r'<(?P<mark>[\w]+>)[\w]+</(?P=mark)','<book>python</book>') In [10]: ma.group()
Out[10]: '<book>python</book>'
Python正则表达式语法的更多相关文章
- Python 正则表达式语法实例
- python 正则表达式语法
- Python 正则表达式模块 (re) 简介
Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,和 Perl 脚本的正则表达式功能类似,使用这一内嵌于 Python 的语言工具,尽管不能 ...
- Python正则表达式 学习笔记
python第一个正则表达式 1. import re : python正则表达式模块 2. 第一个正则表达式 re.compile(r'imooc') pattern.match('imooc py ...
- Python基础语法07--面向对象+正则表达式
Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过 ...
- python正则表达式re
Python正则表达式: re 正则表达式的元字符有. ^ $ * ? { [ ] | ( ).表示任意字符[]用来匹配一个指定的字符类别,所谓的字符类别就是你想匹配的一个字符集,对于字符集中的字符可 ...
- 比较详细Python正则表达式操作指南(re使用)
比较详细Python正则表达式操作指南(re使用) Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 E ...
- python正则表达式 小例几则
会用到的语法 正则字符 释义 举例 + 前面元素至少出现一次 ab+:ab.abbbb 等 * 前面元素出现0次或多次 ab*:a.ab.abb 等 ? 匹配前面的一次或0次 Ab?: A.Ab 等 ...
- Python基本语法初试
编程环境: win7旗舰版 Python 3.2.2(default, Sep 4 2011,09:51:08) 代码来源:(Python菜鸟) 代码内容: Python基本的输出语句print(& ...
随机推荐
- npm基本语法
npm -version 查看npm版本 npm install <name> 安装node.js的依赖包 npm install <name> @3.0.6 安装版本为3 ...
- Python的range(n)的用法
Python的range(n) 方法就是: API定义: If you do need to iterate(迭代) over a sequence(一系列) of numbers, the buil ...
- Select(快速选择顺序统计量)原理及C++代码实现
SELECT算法利用快排中的partition思想来进行无序数组的快速选择. 寻找第i个顺序统计量可以简单理解为寻找第i小的元素. 该算法通过为partition选择一个好的主元,来保证Partiti ...
- 61)PHP,立即跳转
一般使用 header(‘Location:’)来进行跳转. ******************************************************************* ...
- python学习笔记(5)数据类型-字典
字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示: d ...
- MySQL中的GIS几何函数和空间分析函数
MySQL空间扩展不仅提供了空间数据的存储能力,而且还具备一些空间运算能力,这些功能通过MySQL内建的几何函数实现.最简单的几何函数昨天已经有所涉及,也就是转换WTK的GEOMFROMTEXT和AS ...
- django的orm介绍以及静态文件介绍
1 django中app的概念 大学:----------------- 项目 信息学院 ----------app01 物理学院-----------app02*强调:创建了app,要在配置文件中注 ...
- mysql 优化2 慢查询
默认情况下mysql不记录慢查询日志,需要在启动的时候指定 bin\mysqld.exe - -slow-query-log 通过慢查询日志定位执行效率较低的SQL语句.慢查询日志记录了所有执行时间超 ...
- 使用mybatis的动态sql解析能力生成sql
需求: 计算平台,有很多表,打算提供一个基于sql的服务接口, sql不能完全在配置页面写死, 要能根据参数不同执行不同的语义,防止sql个数爆炸 把mybatis原码down下来, 改造一下测试用例 ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-发送测试报告邮件(19)
给多个人发邮件时,可以传入邮箱列表 把多个收件人用分号隔开 # -*- coding: utf-8 -*-# @Time : 2020/2/15 17:02# @File : send_mail_19 ...