python系统模块之re
正则模块re:
元字符:
| 字符 | 描述 |
| . | 除换行符外的任意字符 |
| \ | 转义字符 |
| [...] | 字符集合,匹配任务其中一个 |
| \d | 数字:[0-9] |
| \D | 非数字:[^\d] |
| \w | 单词字符[A-Za-z0-9] |
| \W | 非单词字符[^\w] |
| \s | 空白字符[\t\r\n\f 空格] |
| \S | 非空白字符[^\s] |
数量词:
| * | 匹配一个字符0次或多次 |
| + | 匹配一个字符1次或多次 |
| ? | 匹配一个字符0次或1次 |
| {m} | 匹配一个字符m次 |
| {m,n} | 匹配一个字符m次到n次 |
| ? | 非贪婪模式 |
边界:
| ^ | 匹配字符串开头和行首 |
| $ | 匹配字符串结尾和行尾 |
| \A | 匹配字符串开头 |
| \Z | 匹配字符串结尾 |
| \b | 匹配\w到\W之间 |
分组:
| | | 左右表达式任意匹配一个,先匹配左边,一般成功则跳过匹配右边, 如果没有|则匹配整个表达式 |
| (...) | 分组匹配,从左到右,没遇到一个编号就+1, 后面可以根据数量词提取内容 |
| (?P<name>...) | 除了分组序号外, 还可以执行一个name的别名 |
|
\<number> |
引用编号为<number>的分组匹配到的字符串 |
| (?P=name) | 引用别名为<name>的分组匹配到的串 |
常用函数:

1) compile(pattern)
创建正则匹配规则对象
>>> import re
>>> pat=re.compile('A')
>>> m=pat.search('CBA')
>>> print m
<_sre.SRE_Match object at 0x9d690c8> #匹配到了,返回MatchObject(True) >>> m=pat.search('CBD')
>>> print m
None #没有匹配到,返回None(False) #上面的等价于 >>> re.search('A','CBA')
<_sre.SRE_Match object at 0xb72cd170> #推荐都用第一种方法
2)findall(pattern, string)
在字符串中查询所有匹配项,并以列表的形式返回
>>> re.findall('a','ASDaDFGAa')
['a', 'a'] #列表形式返回匹配到的字符串
>>> pat = re.compile('a')
>>> pat.findall('ASDaDFGAa')
['a', 'a'] #列表形式返回匹配到的字符串
>>> pat = re.compile('[A-Z]+') #正则匹配:'[A-Z]+' 后面有说明
>>> pat.findall('ASDcDFGAa')
['ASD', 'DFGA'] #找到匹配到的字符串
>>> pat = re.compile('[A-Z]')
>>> pat.findall('ASDcDFGAa') #正则匹配:'[A-Z]+' 后面有说明
['A', 'S', 'D', 'D', 'F', 'G', 'A'] #找到匹配到的字符串
>>> pat = re.compile('[A-Za-z]') #正则匹配:'[A-Za-z]+' 匹配所有单词,后面有说明
>>> pat.findall('ASDcDFGAa')
['A', 'S', 'D', 'c', 'D', 'F', 'G', 'A', 'a']
3)search(pattern,string)
在字符串中查询第一个匹配项,并以对象的形式返回
>>> m = re.search('asd','ASDasd')
>>> print m
<_sre.SRE_Match object at 0xb72cd6e8> #匹配到了,返回MatchObject(True)
>>> m = re.search('asd','ASDASD')
>>> print m
None #没有匹配到,返回None(False)
4)match(pattern,string)
在字符串开始位置查询匹配项,并以对象的形式返回
>>> m = re.match('a','Aasd')
>>> print m
None #没有匹配到,返回None(False
>>> m = re.match('a','aASD')
>>> print m
<_sre.SRE_Match object at 0xb72cd6e8> #匹配到了,返回MatchObject(True)
可以用第一个方法:compile
>>> pat=re.compile('a')
>>> printpat.match('Aasd')
None
>>> printpat.match('aASD')
<_sre.SRE_Match object at 0xb72cd6e8>
5)split(pattern,string)
在字符串中根据模式分隔字符串
>>> re.split(',','a,s,d,asd')
['a', 's', 'd', 'asd'] #返回列表
>>> pat = re.compile(',')
>>> pat.split('a,s,d,asd')
['a', 's', 'd', 'asd'] #返回列表
>>> re.split('[, ]+','a , s ,d ,,,,,asd') #正则匹配:[, ]+,后面说明
['a', 's', 'd', 'asd']
>>> re.split('[, ]+','a , s ,d ,,,,,asd',maxsplit=2) # maxsplit 最多分割次数
['a', 's', 'd ,,,,,asd']
>>> pat = re.compile('[, ]+') #正则匹配:[, ]+,后面说明
>>> pat.split('a , s ,d ,,,,,asd',maxsplit=2) # maxsplit 最多分割次数
['a', 's', 'd ,,,,,asd']
6)sub(pattern,repl,string)
在字符串中将匹配项替换成目标,返回字符串
>>> re.sub('a','A','abcasd') #找到a用A替换,后面见和group的配合使用
'AbcAsd'
>>> pat = re.compile('a')
>>> pat.sub('A','abcasd')
'AbcAsd'
#通过组进行更新替换:
>>> pat=re.compile(r'www\.(.*)\..{3}') #正则表达式
>>> pat.match('www.dxy.com').group(1)
'dxy'
>>> pat.sub(r'\1','hello,www.dxy.com') #通过正则匹配找到符合规则的”www.dxy.com“ ,取得组1字符串 去替换 整个匹配得到字符串。dxy -> www.dxy.com
'hello,dxy'
>>> pat=re.compile(r'(\w+) (\w+)') #正则表达式
>>> s='hello world ! hello hz !'
>>> pat.findall('hello world ! hello hz !')
[('hello', 'world'), ('hello', 'hz')]
>>> pat.sub(r'\2 \1',s) #通过正则得到组1(hello),组2(world),再通过sub去替换。即组1替换组2,组2替换组1,调换位置。
'world hello!hz hello!'
7)escape(string)
特殊字符转移
>>> re.escape('www.dxy.cn')
'www\\.dxy\\.cn' #转义
注意:
a) 以上函数中只有match,search返回的是一个对象, 可以使用span,group方法

>>> pat = re.compile(r'www\.(.*)\.(.*)') #用()表示一个组,2个组
>>> m = pat.match('www.dxy.com')
>>> m.group() #默认为0,表示匹配整个字符串
'www.dxy.com'
>>> m.group(1) #返回给定组1匹配的子字符串
'dxy'
>>> m.group(2)
'com'
>>> m.start(2) #组2开始的索引
8
>>> m.end(2) #组2结束的索引
11
>>> m.span(2) #组2开始、结束的索引
(8, 11)
>>> m1 = pat.search('www.dxy.com')
>>> m1.group()
'www.dxy.com'
>>> m1.group(1)
'dxy'
>>> m1.group(2)
'com'
>>> m1.start(2)
8
b)正则表达式内容的时候, 尽量前面添加r'表达式', 可以保证内容中的正则不会被python进行转移处理, 保持原始字符给到re引擎
使用示例:
python系统模块之re的更多相关文章
- python系统模块
Python中大多数系统接口都集中在两个模块:sys和os.这么说有点过于简单化 还有一些其他的表转模块也属于这个领域他们包括: glob 用于文件名的扩展 socket 用于网络连接和进程间通信(I ...
- Python系统模块os.py和sys.py常用函数
OS模块 os模块就是对操作系统进行操作,使用该模块必须先导入模块: import os #getcwd() 获取当前工作目录(当前工作目录默认都是当前文件所在的文件夹) result = os.ge ...
- Python—系统模块(os和sys)
os模块 https://www.cnblogs.com/feifeifeisir/p/9519282.html sys模块 获取Python版本信息 import sys a = sys.versi ...
- python 系统模块 OS
os.system("系统命令") 调用系统命令 os.system("task kill /f /im 系统的进程") 关闭系统进程 os.listdir( ...
- Python OS模块标准库的系统接口及操作方法
Python OS模块标准库的系统接口及操作方法 os.name 返回当前操作系统名,定义了'posix','nt','mac','os2','ce','java'(我使用win7/python3.1 ...
- python一些模块的exe安装包在windows的64位系统里识别不到已安装Python目录的解决方法
在windows里安装python一些模块时候,有时候源码安装比较困难,pip install也各种报错,这时候最喜欢用别人编译好的exe或者whl文件来安装,但是在windows的64位系统里,如果 ...
- Python—day17时间模块、系统模块、递推遍历、序列化
一.time'''时间戳(timestamp):time.time()延迟线程的运行:time.sleep(secs)(指定时间戳下的)当前时区时间:time.localtime([secs])(指定 ...
- Python 常用系统模块整理
Python中的常用的系统模块中部分函数等的整理 random: 随机数 sys: 系统相关 os: 系统相关的 subprocess: 执行新的进程 multiprocessing: 进程相关 th ...
- python模块知识二 random -- 随机模块、序列化 、os模块、sys -- 系统模块
4.random -- 随机模块 a-z:97 ~ 122 A-Z :65 ~ 90 import random #浮点数 print(random.random())#0~1,不可指定 print( ...
- python常用标准库(os系统模块、shutil文件操作模块)
常用的标准库 系统模块 import os 系统模块用于对系统进行操作. 常用方法 os模块的常用方法有数十种之多,本文中只选出最常用的几种,其余的还有权限操作.文件的删除创建等详细资料可以参考官方文 ...
随机推荐
- 计算机图形学(第四版) PDF 中文版
目录 图书介绍 下载地址 图书介绍 <计算机图形学(第四版)>是2014年电子工业出版社出版的图书,作者是Donald Hearn.M. Pauline Baker.Warren R. C ...
- Qml 实现瀑布流布局
[写在前面] 最近在刷掘金的时候看到一篇关于瀑布流布局的文章,然鹅他们的实现都是前端的那套,就想着 Qml 有没有类似实现. 结果百度了一圈也没有( T_T Qml 凉了凉了 ),于是,我按照自己理解 ...
- Go实现常用的排序算法
一.插入排序 1.从第一个元素开始,该元素可以认为已经被排序 2.取出下一个元素,在已经排序的元素序列中从后向前扫描 3.如果该元素(已排序)大于新元素,将该元素移到下一位置 4.重复步骤3,直到找到 ...
- EF Core – Unit of Work, DbContext, Transaction 概念解释
前言 踩了一个坑, 下面是 2 个 scope 的调用, 第 1 和 3 是一个 Audit log filter action, 第 2 个是 controller. // open tran // ...
- windows在cygwin64下使用acme.sh批量签发Let's Encrypt的ssl证书,并用powershell重新分配iis证书
使用前提 本脚本是在使用阿里云Windows服务器的前提,如果使用其他dns服务,请参看acme.sh的dns相关文档 配置好cygwin64.acme.sh并配置好阿里云账户,openssl最好也安 ...
- QT原理与源码分析之如何开发一个自定义的绘图设备和QT绘图引擎?
简介 本文将介绍如何自定义QT绘图设备类和如何自定义QT绘图引擎类. 目录 QT绘图设备抽象类QPaintDevice QT绘图引擎抽象类QPaintEngine 自定义绘图设备类 自定义绘图引擎类 ...
- 小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
小米 13T Pro 是一款性能卓越.设计精美的旗舰机型,具备多项领先配置,且在与前一代产品及友商机型的对比中优势明显,值得深入探讨. 性能提升 小米 13T Pro 搭载了最新的 天玑 9200+ ...
- cf1632 Codeforces Round #769 (Div. 2)题解
A ABC 水题0.0 B Roof Construction 构造题,经过实验构造出了0的右边是不超过\(n\)的最大的\(2^k\rightarrow n\),左边是\(2^k-1,2^k-2,. ...
- 18 Transformer 的动态流程
博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...
- Oracle 11.2.0.4 Data Guard 部署练习【一主一备/单机】
Oracle DG 理论及实验笔记 DATAGUARD 是通过建立一个 PRIMARY 和 STANDBY 组来确立其参照关系. STANDBY 一旦创建, DATAGUARD 就会通过将主数据库 ( ...