笔记-python-lib-re
笔记-python-lib-re
1. re模块简介
re模块提供了与perl类似的正则匹配功能。
要搜索的模式和字符串都可以是Unicode字符串(str)以及8位字符串(bytes)。但是,不能混合Unicode字符串和8位字符串:也就是说,不能将Unicode字符串与字节模式匹配,反之亦然。
反斜杠:正则表达式使用了\表示转义,如果要匹配一个反斜杠,需要写成\\\\作为模式字符串。
另一种办法是声明字符串中的\不会以特殊方式处理,在字符串前加r,r’\n’是两个字符,而不是换行;
2. 模块内容
2.1. compile
re.compile(pattern, flags=0)
compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
参数:
pattern:一个字符串形式的正则表达式
flags:可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:
re.I 忽略大小写
re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境
re.M 多行模式,影响^和$
re.S 意为' . '包括换行符在内的任意字符(一般' . '不包括换行符)
re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库
re.X 为了增加可读性,忽略空格和' # '后面的注释
example:
pattern = re.compile(r’\d+?’)
2.2. match
re.match(pattern, string, flags=0)
判断RE是否在字符串刚开始的位置匹配,返回match object。
注意:只要字符串开始部分满足匹配即成功,如果想要整串匹配可加$符。
example:
s = re.match('[a-z]+', str1)
2.3. search
re.search(pattern, string, flags=0)
在字符串内查找模式匹配,只要找到第一个匹配然后返回一个match object对象,如果没有则返回None。
<_sre.SRE_Match object; span=(0, 5), match='eoorg'>
2.4. split
split(pattern, string, maxsplit=0, flags=0)
以模式匹配的字符串的为界拆分字符串;
如果使用(),则模式组也包含在结果中;
str1 = 'eoorg943443g382\jgdo 349po\oer g34 345364 sfwe fwegre ewfwe fwef'
s = re.split(r'\d+', str1, 4)
['eoorg', 'g', '\\jgdo ', 'po\\oer g', ' 345364 sfwe fwegre ewfwe fwef']
s = re.split(r'(\d+)', str1, 4)
['eoorg', '943443', 'g', '382', '\\jgdo ', '349', 'po\\oer g', '34', ' 345364 sfwe fwegre ewfwe fwef']
maxsplit指定最大拆分次数,达到次数后,剩余字符串作为列表元素添加到列表尾部。
2.5. findall
findall(pattern, string, flags=0)
遍历匹配,获取字符串中所有匹配的字符串,返回一个列表;如果模式有多个组,返回元组列表。
2.6. sub
sub(pattern, repl, string, count=0, flags=0)
替换匹配的子串,返回替换后的字符串。
str1 = 'JGOOD is a handome boy, he is cool, clever, and so on...'
s = re.sub('\s+', '-', str1)
print(s)
参数count指替换个数,默认为0,表示每个匹配项都替换。
2.7. subn
subn(pattern, repl, string, count=0, flags=0)
与sub所做操作一样,但返回一个元组,(new_string, number_of_sub_made)。
2.8. match objects
上面讲过search,match会返回一个match object
str1 = 'JGOOD is a handome boy, he is cool, clever, and so on...'
s = re.search('[a-z]+', str1)
print(s)
<_sre.SRE_Match object; span=(6, 8), match='is'>
match objects支持以下方法和属性:
match.group([group1]) 可以不带参数,表示所有匹配项;带参数则表示参数所对应的项;
str1 = 'JGOOD is a handome boy, he is cool, clever, and so on...'
pattern = re.compile(r'\s+')
s = re.match('(\w+)\s(\w+)', str1)
print(s)
<_sre.SRE_Match object; span=(0, 8), match='JGOOD is'>
>>> s.group()
'JGOOD is'
>>> s.group(1)
'JGOOD'
>>> s.group(2)
'is'
>>>
match.groups() 返回一个tuple,包含所有子组
match.start()
match.end() 返回匹配结果开始结束字符的下标
match.span() 与上文同义,返回匹配结果开始结束下标,格式是元组;
match.re 以re.compile('(\\w+)\\s(\\w+)')格式返回该对象使用的正则表达式
笔记-python-lib-re的更多相关文章
- 笔记-python -asynio
笔记-python -asynio 1. 简介 asyncio是做什么的? asyncio is a library to write concurrent code using the a ...
- 笔记-python操作mysql
笔记-python操作mysql 1. 开始 1.1. 环境准备-mysql create database db_python; use db_python; create tabl ...
- 笔记-python异常信息输出
笔记-python异常信息输出 1. 异常信息输出 python异常捕获使用try-except-else-finally语句: 在except 语句中可以使用except as e,然后通 ...
- 笔记-python lib-pymongo
笔记-python lib-pymongo 1. 开始 pymongo是python版的连接库,最新版为3.7.2. 文档地址:https://pypi.org/project/pymong ...
- 笔记-python tutorial-9.classes
笔记-python tutorial-9.classes 1. Classes 1.1. scopes and namespaces namespace: A namespace is ...
- MongoDB学习笔记:Python 操作MongoDB
MongoDB学习笔记:Python 操作MongoDB Pymongo 安装 安装pymongopip install pymongoPyMongo是驱动程序,使python程序能够使用Mong ...
- 机器学习实战笔记(Python实现)-08-线性回归
--------------------------------------------------------------------------------------- 本系列文章为<机器 ...
- 机器学习实战笔记(Python实现)-05-支持向量机(SVM)
--------------------------------------------------------------------------------------- 本系列文章为<机器 ...
- 机器学习实战笔记(Python实现)-04-Logistic回归
--------------------------------------------------------------------------------------- 本系列文章为<机器 ...
- 机器学习实战笔记(Python实现)-03-朴素贝叶斯
--------------------------------------------------------------------------------------- 本系列文章为<机器 ...
随机推荐
- <Linux系统uname命令用法>
uname命令:操作系统信息的显示 uname 命令主要用于显示操作系统的信息,包括版本.平台的信息. 它的参数主要有以下: -a 显示全部信息 -s 显示内核名称 -n 显示主机名 -r 显示当前系 ...
- spring boot 监控与管理(actuator)
Spring POMs 中提供了一个特殊的依赖模块,即spring-boot-starter-actuator,我们只需要在我们的POM中添加依赖即可 <!-- 监控 管理 --> < ...
- Java调用webservice接口方法(SOAP message、xfire、axis)
webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使 ...
- npm warn weex @1.0.0 no repository field
玩weex出现nmp安装问题总是包这个错,但是其实是安装成功的 npm warn weex@1.0.0 no repository field. 看字面意思大概是package.json里缺少repo ...
- GitLab关于SSH的使用
SSH Git是分布式版本控制系统,这意味着您可以在本地工作,但您也可以将更改共享或“推送”到其他服务器.在将更改推送到GitLab服务器之前,您需要一个用于共享信息的安全通信通道. SSH协议提供此 ...
- 网页编辑器CKEditor4.3.1+CKFinder2.4+JW Player6.7(视频播放器)集成
CKEditor是使用最多的一款在线网页编辑器,不仅好用,而且功能强大.易扩展.浏览器兼容性好.另外,CKEditor网页编辑器经常更新.本程序使用的是最新稳定版CKEditor4.3.1,添加使用了 ...
- nrm—源管理工具
全局安装 npm install -g nrm 查看可选源 nrm ls 其中,带*的是当前使用的源,上面的输出表明当前源是hiknpm 切换源 nrm use taobao 新增源 nrm add ...
- HDU 2955 Robberies抢劫案(01背包,变形)
题意:要抢劫,但是抢每个银行都有被抓的概率,问在低于规定的被抓概率情况下最多能抢到多少钱. 输入:第一行为T,表示共T个测试例子.每个例子的第一行给出一个浮点数P,是规定被抓的概率上限.第一行还有一个 ...
- pycharm tab换为4个空格
Edit => find => replace 然后勾上 Regex,上一行输入 \t,下一行输入4个空格.
- webpack打包过程如何调试?
本文适用于已经会使用webpack的前端开发人员,但是想进一步了解webpack细节和进阶. 首先请读者按照我前一篇文章 Webpack 10分钟入门介绍的步骤,在本地搭建一个webpack的hell ...