python中正则表达式
正则表达式是一种通用的字符串匹配技术,是不会因为编程语言不一样而发生变化的
如果想查找对应规则的字符串,就可以用正则表达式
python中要使用正则表达式需使用re模块,它是正则表达式在python中的封装
1.匹配的方式:match、search、findall
1.1 match 表示: 从开始的位置进行匹配,即从第一个字符开始匹配,第一个没有匹配到,则整个就不会匹配到
# 匹配特定的字符串 "abc"
import re re_pattern = r'abc'#写匹配规则式时,要加上转意字符r
res = re.match(re_pattern, "abwofowpqfowfjowefjiwoefabcowof")
# 从 "wofowpqfowfjowefjiwoefabcowof" 这个字符串当中匹配是否 有 re_pattern
# match 表示: 从开始的位置进行匹配,即从第一个字符开始匹配,第一个没有匹配到,则整个就不会匹配到
print(res)
1.2search 全文匹配,如果表达式有多处可以匹配到,只会返回第一个匹配到的结果
# search, 全文匹配,如果表达式有多处可以匹配到,只会返回第一个匹配到的结果
res = re.search(re_pattern, "abcwofowpqfowfjowefjiwoefabcowof")
print(res)
1.3findall 全部匹配,如果表达式有多处可以匹配到,结果也会返回多个
# findall, 全部匹配,如果表达式有多处可以匹配到,结果也会返回多个
res = re.findall(re_pattern, "abcwofowpqfowfjowefjiwoefabcowof")
print(res)
2.语法
2.1 [abc] 匹配中括号中的任意一个字符
# [abc], 匹配中括号中的任意一个字符
re_pattern = r'[abc]',
res = re.findall(re_pattern, "abcwofowpqfowfjowefjiwoefabcowof")
print(res)
2.2 .匹配任意一个字符串 除了 \n
# . 匹配任意一个字符
re_pattern = r'.',
res = re.findall(re_pattern, "abcwofowpqfowfjowefjiwoefabcowof")
print(res)
2.3 \d 匹配数字,相当于[0-9]
# \d 匹配数字 data,相当于[0-9]
re_pattern = r'\d'
res = re.findall(re_pattern, "a123bcwofowpqfowfjowefjiwoefabcowof")
print(res)
2.4 \D 匹配非数字
# \D 匹配非数字 data
re_pattern = r'\D'
res = re.findall(re_pattern, "a@123bcwofowpqfowfjowefjiwoefabcowof")
print(res)
2.5 \w 匹配字母、数字、下划线 相当于[A-Za-z0-9_]
# \w 匹配字母,数字,下划线
re_pattern = r'\w'
res = re.findall(re_pattern, "a@_123bcwofowpqfowfjowefjiwoefabcowof")
print(res)
2.6 \W 反向的, 非匹配字母,数字,下划线
2.7{}匹配花括号当中次数,一般要和其他的规则配合使用
# 匹配花括号当中的数字次, 匹配几次,
re_pattern = r'\d{2}'
res = re.findall(re_pattern, "aa@_123b&cwofowpqfowfjowefjiwoefabcowof")
print(res)
2.8 {2, } 匹配至少 2 次
# {2, } 匹配至少 2 次
# TODO: 正则表达式当中,千万不要手残,空格不能随便打
# 贪婪模式, python 当中
re_pattern = r'\w{2,}'
res = re.findall(re_pattern, "aa@_123b&cwofowpqfowfjowefjiwoefabcowof")
print(res)
2.9 {,2} 匹配最多 2 次
# {,2} 匹配最多 2 次
re_pattern = r'\w{,2}'
res = re.findall(re_pattern, "aa@_123b&cwofowpqfowfjowefjiwoefabcowof")
print(res)
2.10 {2,4} 匹配 2 -4 次,最少匹配2,最多匹配4次
# {2,4} 匹配 2 -4 次,最少匹配2,最多匹配4次
re_pattern = r'\w{2,4}'
res = re.findall(re_pattern, "aa@_123b&cwofowpqfowfjowefjiwoefabcowof")
print(res)
例子:匹配手机号码
# 如何去匹配一个手机号码
# re_pattern = r'1[35789]\d{9}'
# res = re.findall(re_pattern, "aa@_123b&cwo17520208510fowpqfowfjowefjiwoefabcowof")
# print(res)
2.11 *匹配0次或者任意次,通配符
# # * 匹配 0 次或者任意次, 通配符,
# re_pattern = r'\d*'
# res = re.findall(re_pattern, "aa@_123b&cwo17520208510fowpqfowfjowefjiwoefabcowof")
# print(res)
2.12 + 匹配1次或者任意次数,通配符
# + 匹配 1 次或者任意次, 通配符,
# re_pattern = r'\d+'
# res = re.findall(re_pattern, "aa@_123b&cwo17520208510fowpqfowfjowefjiwoefabcowof")
# print(res)
2.13 ? 匹配 0 次或者 1 次,非贪婪模式
# ? 匹配 0 次或者 1 次
re_pattern = r'\d?'
res = re.findall(re_pattern, "aa@_123b&cwo17520208510fowpqfowfjowefjiwoefabcowof")
print(res)
2.14 ^开头
# ^ 开头
re_pattern = r'^\d'
res = re.findall(re_pattern, "1aa@_123b&cwo17520208510fowpqfowfjowefjiwoefabcowof")
print(res)
2.15 $结尾
# # $结尾
# re_pattern = r'\d*$'
# res = re.findall(re_pattern, "jiwoefabcowof3434")
# print(res)
2.16组,findall中是用括号表示
search中用.group()表示
# # 组,如果你要匹配的内容,显示出来不包含首位的字符,可以加上括号
re_pattern = r'#(.*?)#'
res = re.findall(re_pattern, mystr)
print(res)
3.替换 re.sub()
# # 替换 re.sub() 替换操作(正则表达式,替换成的字符串,被替换的字符串)
# mystr = re.sub(re_pattern, 'me123', mystr, 1)
python中正则表达式的更多相关文章
- python 中 正则表达式 的应用
python 中 正则表达式 的应用 最近作业中出现了正则表达式,顺便学习了一下. python比较厉害的一点就是自带对正则表达式的支持,用起来很方便 正则表达式 首先介绍一下什么是正则表达式. 正则 ...
- 第11.20节 Python 中正则表达式的扩展功能:后视断言、后视取反
一. 引言 在<第11.19节 Python 中正则表达式的扩展功能:前视断言和前视取反>中老猿介绍了前视断言和前视取反,与二者对应的还有后视断言和后视取反. 二. (?<=-)后视 ...
- python中正则表达式 re.findall 用法
在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配. 其中,re.findall() 函数可以遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表. 在python源代码中 ...
- python中正则表达式re模块详解
正则表达式是处理字符串的强大工具,它有自己特定的语法结构,有了它,实现字符串的检索,替换,匹配验证都不在话下. 当然,对于爬虫来说,有了它,从HTML里提取想要的信息就非常方便了. 先看一下常用的匹配 ...
- python中正则表达式在中文字符串匹配时的坑
之前一直有使用python 正则表达式来做中文字符串或者中英文数字混合的字符串的匹配,发现有不少情况下会匹配失灵或者结果混乱,并且在不同操作系统上匹配结果也不一致,查了很久都不知道是什么原因.今天终于 ...
- js中正则表达式与Python中正则表达式的区别
今天女票让我帮她写一个js中的正则,来提取电话号码,对于正则规则来说,js与python是基本没有区别的,重点的区别是在一些函数与方法中. python中的正则提取: import re str = ...
- Python中正则表达式讲解
正则表达式是匹配字符串的强大武器,它的核心思想是给字符串定义规则,凡是符合规则的字符串就是匹配了,否则就是不合法的.在介绍Python的用法之前,我们先讲解一下正则表达式的规则,然后再介绍在Pytho ...
- 关于Python中正则表达式的反斜杠问题
之前总是搞不明白正则表达式中的反斜杠的问题.今天经过查阅资料终于搞明白了. 其中最重要的一点就是Python自己的字符串中定义的反斜杠也是转义字符,而正则表达式中的反斜杠也是转义字符,所以正则表达式中 ...
- 第11.21节 Python 中正则表达式的其他扩展功能
一. 引言 在<第11.17节 Python 正则表达式扩展功能:命名组功能及组的反向引用>中老猿介绍了组匹配模式的命名组功能及引用组功能,这两者都是正则表达式的扩展功能,其实在re模块中 ...
随机推荐
- python识别视频黑屏或者低清晰度
第一步:获取视频第一帧图片 https://www.cnblogs.com/pythonywy/p/13749735.html 第二步:进行识别 import os import numpy as n ...
- 使用websocket连接(对接)asp.net core signalr
使用通用websocket连接asp.net core signalr 一.背景介绍 signalr的功能很强大,可以为我们实现websocket服务端节省不少的时间.但是可能由于不同的环境,我们在对 ...
- scott lock
账户被锁: cmd --->sqlplus /nolog--->conn sys/change_on_install as sysdba;---->alter user scott ...
- MySQL全面瓦解:安装部署与准备
下载与安装 互联网高速时代下,我们的生活发生了巨大的变化,从购物(淘宝.京东),出行(滴滴.快狗),支付(支付宝.微信)等,遍及我们生活的方方面面,我们使用这些系统和应用的时候,会在上面获取.存储大量 ...
- 【4】TensorFlow光速入门-保存模型及加载模型并使用
本文地址:https://www.cnblogs.com/tujia/p/13862360.html 系列文章: [0]TensorFlow光速入门-序 [1]TensorFlow光速入门-tenso ...
- Spark为什么只有在调用action时才会触发任务执行呢(附算子优化和使用示例)?
Spark算子主要划分为两类:transformation和action,并且只有action算子触发的时候才会真正执行任务.还记得之前的文章<Spark RDD详解>中提到,Spark ...
- 【总结】mybatis分页(实现 + 原理)
1.mybatis pageHelper分页实现 (1)引入依赖 (2)配置pageHelper插件 <configuration> <!-- 引入 pageHelper插件 --& ...
- Linux系统下安装配置JDK(rpm方式及tar.gz方式)
以前都是在Windows环境进行开发的,最近因工作需要:学习在Linux系统下搭建开发环境,自此记录搭建过程,以方便查阅. 本文借鉴了 Angel挤一挤 .小五 两位的博客. 准备材料: JDK下载链 ...
- DevExpress XtraReport报表预览时可编辑的功能
设置控件的EditOptions.Enabled=true即可 注册实现PrintingSystem. EditingFieldChanged事件,可获得当前发生更改的控件的值. 另:XtraRepo ...
- CEF避坑指南(一)——编译并自制浏览器
CEF即Chromium Embedded Framework,Chrome浏览器嵌入式框架.我们可以从自制浏览器入手,深入学习它.它提供了接口供程序员们把Chrome放到自己的程序中.许多大型公司, ...