python操作re正则表达式的精简总结
正则介绍和知识点
用来简洁表达一组字符串的表达式。
编译:将符合正则表达式语法的字符串转换成正则表达式特征
正则表达式语法由字符和操作符构成
re库是Python的标准库 用import re
调用
r'text\f\sdfs[{?'
用此方法来转义字符串
Match对象是一次匹配的结果,包含匹配的很多信息
Re库默认采用贪婪匹配,即输出匹配最长的子串
贪婪匹配和最小匹配 如 r'PY.*N'
和r'PY.*?N'
。用?
只要长度输出可能不同的,都可以通过在操作符后增加?变成最小匹配
常用的操作符
操作符
. 表示任何单个字符
[] 字符集,对单个字符给出取值范围
[^ ] 非字符集,对单个字符给出排除范围
* 前一个字符0次或无限次扩展
+ 前一个字符1次或无限次扩展
? 前一个字符0次或1次扩展
| 左右表达式任意一个
{m} 扩展前一个字符m次
{m,n} 扩展前一个字符m至n次(含n)
^ 匹配字符串开头
$ 匹配字符串结尾
( ) 分组标记,内部只能使用 | 操作符
\d 数字,等价于[0‐9]
\w 单词字符,等价于[A‐Za‐z0‐9_]
经典实例
^[A-Za-z]+$ 26个字母组成的字符串
^[A‐Za‐z0‐9]+$ 26个字母和数字组成的字符串
^‐?\d+$ 整数形式的字符串
^[0‐9]*[1‐9][0‐9]*$ 正整数形式的字符串
[1‐9]\d{5} 境内邮政编码6位
[\u4e00‐\u9fa5] 匹配中文字符
Re库主要功能函数
功能函数
re.search() 在字符串中搜索匹配正则表达式第一个位置,返回match对象
re.match() 从一个字符串的开始位置起匹配正则表达式,返回match对象
re.findall() 搜索字符串,以列表类型返回全部能匹配的子串
re.splite() 将一个字符串按照正则表达式匹配结果进行分割,返回列表类型
re.finditer() 搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象
re.sub() 在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串
字符串匹配
import re
s = re.search(r'[1-9]\d{5}','BITfs 1000894654') #匹配后6位数字
if s:print(s.group(0))ls = re.findall(r'[1-9]\d{5}','fsfsd100081 fsdfs100084') #以列表的形式匹配
print(ls)spt = re.split(r'[1-9]\d{5}','fsfs100088 sfsdf100099') #分割字符串
print(spt)
spt_max = re.split(r'[1-9]\d{5}','fsfs100088 sfsdf100099 vxc5464654',maxsplit=1) #最大分割数
print(spt_max)for m in re.finditer(r'[1-9]\d{5}','fdsgdf5646165 vxcvx3113213 ewrer4461313'): #迭代if m:print(m.group(0))sb = re.sub(r'[1-9]\d{5}',':zipcode','fdsgdf5646165 vxcvx3113213') #替换字符串
print(sb)
运行后
正则的等价用法:
import re
rst = re.search(r'[1-9]\d{5}','fsdf5465465')
if rst:print(rst.group(0))print('-'*50)
#re 库的另一种等价用法
#面向对象用法
pat = re.compile(r'[1-9]\d{5}')
rst = pat.search('fsdf5465465') #pat.xxx(string) string表示待匹配的字符串
if rst:print(rst.group(0))
参数
re.search(pattern, string, flags=0)
re.match(pattern, string, flags=0)
re.findall(pattern, string, flags=0)
re.split(pattern, string, maxsplit=0, flags=0)
re.finditer(pattern, string, flags=0)
re.sub(pattern, repl, string, count=0, flags=0)
regex = re.compile(pattern, flags=0)
↓
pattern : 正则表达式的字符串或原生字符串表示
string : 待匹配字符串
flags : 正则表达式使用时的控制标记
repl : 替换匹配字符串的字符串
count : 匹配的最大替换次数
maxsplit: 最大分割数,剩余部分作为最后一个元素输出
match对象
属性
.string 待匹配的文本
.re 匹配时使用的patter对象(正则表达式)
.pos 正则表达式搜索文本的开始位置
.endpos 正则表达式搜索文本的结束位置
方法
.group(0) 获得匹配后的字符串
.start() 匹配字符串在原始字符串的开始位置
.end() 匹配字符串在原始字符串的结束位置
.span() 返回(.start(), .end())
最小匹配操作符
*? 前一个字符0次或无限次扩展,最小匹配
+? 前一个字符1次或无限次扩展,最小匹配
?? 前一个字符0次或1次扩展,最小匹配
{m,n} 扩展前一个字符m至n次(含n),最小匹配
总结
python操作re正则表达式的精简总结相关推荐
- Python 开发-2 (文件操作,正则表达式,类,JSON,装饰器,异常处理,Socket)
文章目录 文件操作 递归创建目录 删除文件或目录 拷贝文件 修改文件名或目录名 文件路径名操作 判断文件,目录是否存在 文件大小与修改时间 当前目录与目录切换 遍历目录文件 遍历目录下指定后缀 目录文 ...
- job for nginx.service failed_用Python操作Kubernetes的Job
关于Kubernetes的Python SDK,几乎只有官方项目的examples.关于Job的基本增删改查操作,可以参考job_crud.py.但是,这只是基本用法,缺乏一些实用细节. 本文给出Py ...
- Python菜鸟之路:Python基础-Python操作RabbitMQ
RabbitMQ简介 rabbitmq中文翻译的话,主要还是mq字母上:Message Queue,即消息队列的意思.rabbitmq服务类似于mysql.apache服务,只是提供的功能不一样.ra ...
- Python高级语法-正则表达式
正则表达式在字符串匹配中起到巨大的作用. 简介 几个数据提取工具对比: re(正则表达式):速度很快,难度高(语法难记),不需要安装(python标准库内置) bs(BeautifulSoup):速度 ...
- python里面的正则表达式_Python中的正则表达式
以下内容转自:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Pyth ...
- java连接mongodb_第78天: Python 操作 MongoDB 数据库介绍
MongoDB 是一款面向文档型的 NoSQL 数据库,是一个基于分布式文件存储的开源的非关系型数据库系统,其内容是以 K/V 形式存储,结构不固定,它的字段值可以包含其他文档.数组和文档数组等.其采 ...
- 抓狐狸python_用Python操作Kubernetes的Job
本文给出Python SDK操作Kubernetes Job的更多示例代码,以及相关解释. pip install kubernetes 初始化 from kubernetes.client impo ...
- [Python]网络爬虫(七):Python中的正则表达式教程(转)
接下来准备用糗百做一个爬虫的小例子. 但是在这之前,先详细的整理一下Python中的正则表达式的相关内容. 正则表达式在Python爬虫中的作用就像是老师点名时用的花名册一样,是必不可少的神兵利器. ...
- [Python]网络爬虫(七):Python中的正则表达式教程
接下来准备用糗百做一个爬虫的小例子. 但是在这之前,先详细的整理一下Python中的正则表达式的相关内容. 正则表达式在Python爬虫中的作用就像是老师点名时用的花名册一样,是必不可少的神兵利器. ...
最新文章
- mysql docker 2003_解决远程连接mysql 报 2003错误的问题(docker)
- TCP/IP详解 笔记十三
- c语文编程提取郑码的单字码表
- APUE(7)---进程环境
- 如何做一名优秀的电子工程师[zz]
- Eclipse 下如何引用另一个项目的资源文件
- PHPCMS V9.6.0 SQL注入漏洞EXP
- 【读书笔记】《暗时间》
- Matlab学习笔记之Matlab中括号用法
- 详解 Elasticsearch refresh 机制
- 甘超波:NLP如何挖掘信念
- Nginx反向正向代理
- java 雷达反射面积_请问:如何使用基本反射率雷达图中的dBZ值判断天气情况?比如多云、雷雨、晴等。谢谢!...
- AutoCAD C# 自动加载自定义RibbonUI界面
- assoc php,PHP array_uintersect_assoc 函数
- Linux 管理联网 nmcli常用命令
- 【随堂笔记】数据结构基础
- keil 报错解决 Loading PDSC Debug Description failed forSTMicroelectronics STM32xxxx
- 报名 | 相约杭州,我们来聊聊区块链技术与行业应用落地
- java 操作 cfs_Lucene 打开cfs文件 并获取数据