30天Python基础(正则表达式)
正则表达式是对字符串操作的⼀种逻辑公式,就是⽤事先定义好的⼀些特定字符、
及这些特定字符的组合,组成⼀个“规则字符串”,这个“规则字符串”⽤来表达对字
符串的⼀种过滤逻辑。
- 需要引⼊内置模块
- re 缺点:效率低下,能⽤字符串⽅法完成尽量使⽤字符串的⽅法
- 优点:编码简单
1.为什么使⽤正则表达式
- 使⽤场景
敏感词过滤
⼿机、邮箱等验证
爬⾍
2.正则表达式的组成 - 原⼦ 组成正则表达式的最⼩单位,任何字符都可以
原⼦ | 含义 |
---|---|
\d | 0-9中任何⼀个字符 [0-9] |
\D | ⾮0-9中的任何⼀个字符 [^0-9] |
\s | \n\r\t 空格 |
\S | ⾮\n\r\t 空格中任何⼀个字符 [^\n\t\r ] |
[] | ⾃⼰创建的原⼦表,[0-4]代表0-4中任何⼀个字符 |
[^] | 排除原⼦表中的字符 |
^ | ⾏⾸;在原⼦表中表示排除 |
$ | ⾏结尾 |
[\u4e00-\u9fa5] | 匹配纯中⽂ |
\w | 0-9a-zA-Z的中任何⼀个字符 [0-9a-zA-Z] |
\W | ⾮0-9a-zA-Z_的中任何⼀个字符[^0-9a-z_AZ] |
. | 代表除\n之外的任何字符 |
\b | 词边界 |
\B | ⾮词边界 |
\A | 字符串开始 |
\Z | 字符串的结尾 |
- | 表示域,0-9就表示0 到9所有数字字符 |
- 元字符 元字符能够增强原⼦的描述能⼒
元字符 | 含义 |
---|---|
{} | 表示重复前一个原子的次数 |
{m} | 表示重复前一个原子的m次 |
{m,n} | 表示重复前一个原子最少m次,最多n次 |
{m,} | 表示重复前⼀个原⼦的最少m次 |
() | 改变优先级,取⼦元素 |
* | 重复0次或多次{0,} |
+ | ⾄少出现1次{1,} |
? | 出现0次或1次{0,1} |
*?或+? | 取消贪婪 |
x|y | 表示匹配x或者y |
- 模式修正符
修饰符 | 含义 |
---|---|
re.S | 使.匹配所有字符 |
re.L | 本地化识别 |
re.U | 根据Unicode字符集解析字符,会影响\b、\B、\w、\W |
re.I | 不区分⼤⼩写 |
re.M | 多行匹配 |
注意:
- 模式字符串⼀定要使⽤原⽣字符串,也就是⽤r开头的字符串。r’www’
- 严格区分⼤⼩写
- 如果正则表达式中有{,},[,],-,?,*,|^,$,.等做普通字符,则要将其转义
3.正则常⽤⽅法 - re.match()
原型:re.match(pattern,string,flags=0)
功能:从字符串起始位置匹配⼀个模式,如果不是从起始位置匹配则返回None
参数:patter 模式string 要匹配的字符串flag 模式修正符
返回值: 匹配成功返回⼀个Match object,失败返回None
print(re.match(r'www','www.baidu.com'))
print(re.match(r'www','http:///www.baidu.com')) #None
print(re.match(r'www','cctv.www.baidu.com')) #None
ret = re.search(r'(abc)+', 'xxxabcabcabcdef')
print(ret.group(0)) # abcabcabc 匹配整个表达式
print(ret.group(1)) # abc 第⼀次匹配到的结果
print(ret.span()) # (3, 12) 开始和结束位置
print(ret.groups()) # 表示当正则表达式⾥有多个分组时,多个分组的匹配
结果
- re.search()
原型:re.search(pattern, string, flags=0)
功能:顺序扫描字符串,找到第⼀个匹配项结束
参数:patter 模式string 要匹配的字符串flag 模式修正符
返回值:匹配成功,返回match object,否则返回None
print(re.search(r'll','hello'))
print(re.search(r'll','heLLo',re.I))
- re.findall()
原型:findall(pattern, string, flags=0)
功能:扫描整个字符串,并返回结果列表
参数:patter: 匹配的正则表达式string: 要匹配的字符串flags:模式修正符
返回值:如果匹配成功返回⼀个列表,包含了所有匹配项,失败返回空列表
print(re.findall(r'oo','kksdkoosdflsdfooksdfsdoOppppweOo',re.I))
#['oo', 'oo', 'oO', 'Oo']
- re.split
原型:split(pattern, string,maxsplit=0,, flags=0)
功能:⽤模式做分隔符,将字符串分隔,返回分隔列表,如果模式加上括号,则分
隔符会被保留
参数:patter: 匹配的正则表达式string: 要匹配的字符串maxsplit 匹配次数,0不限制次数flags:模式修正符print(re.split(r'\d|,|;','w1w2w3w,w;w'))#['w', 'w', 'w', 'w',
'w', 'w']
- re.sub和re.subn
sub(pattern, repl, string, count=0)
subn(pattern, repl, string, count=0)
功能:在⽬标字符串中以正则表达式的规则匹配字符串,再把他们替换成指定的字
符串。可以指定替换的次数,如果 不指定,替换所有的匹配字符串
参数:pattern: 正则表达式(规则)repl: 指定的⽤来替换的字符串string: ⽬标字符串count: 最多替换次数
区别:前者返回⼀个替换后的字符串,后者返回⼀个元组,第⼀个元素替换后的字
符串,第⼆个元素表示被替换的次数
print(re.sub(r"(good)", "nice", "cheng is good man"))
print(re.subn(r"(good)", "nice", "cheng is good man"))
- re.group()和re.groups()
⽤于提取⼦元素,模式中⼀个括号就是⼀个⼦元素,group和groups只能在
match和search⽅法⾥使⽤,通过返回的match object获取⼦元素。在模式串
和sub和subn中的替换字符串中可以使⽤\1,\2,\3…来引⽤⼦元素
m = re.match(r"(\d{3})-(\d{8})", "010-53247654")
#使⽤序号获取对应组的信息,group(0)⼀直代表的原始字符串
print(m.group(0))
print(m.group(1))
print(m.group(2))
#查看匹配的各组的情况
print(m.groups())
- compile
当我们使⽤正则表达式时,re模块会⼲两件事 1、编译正则表达式,如果正则
表达式本身不合法,会报错 2、⽤编译后的正则表达式去匹配对象
编译正则表达式使⽤compile
原型:re.compile(pattern, flags=0)
功能:将正则表达式模式编译成正则表达式对象,其 match() 和 search() ⽅
法可⽤于匹配
参数:pattern 模式flags 模式修正符
re_telephon = re.compile(r"^1(([3578]\d)|(47))\d{8}$") #编译,返回
print(re_telephon.match("13600000000")) #
30天Python基础(正则表达式)相关推荐
- python基础—正则表达式即re模块
正则表达式(regular expression),就是字符匹配模式,而这个匹配规则在我们写爬虫进行数据提取,或者进行数据可视化进行数据清洗时经常用到,多样化的匹配规则在复杂的字符的情况提取数据时助我 ...
- python入门编程题库-Python随笔30:Python基础编程练习题25~26
注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性. 注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性. Python编程 Python基础练习题25:合并两个列 ...
- 【学习笔记】30、Python基础综合练习
Python基础综合练习 [综合习题] 设计一个MySQL数据库操作的类,可以实现数据库的各种操作(增删改查). 创建类源代码: # 创建MySQL数据库操作的类 class Mysql_opeati ...
- Python基础——正则表达式
文章目录 1.前言 2.单匹配 3.多匹配 4.按类型匹配 5.重复匹配 6.分组 7.findall(找全部匹配项) 8.replace(替换) 9.split(切分) 10.compile 1.前 ...
- python基础—正则表达式
目录 1.正则表达式:☆ 1.1 正则写法快速入门: ① 常用正则符号:☆ 1.1.1 利用原生字符r"\()" 规则: ② 使用re模块实现正则表达式: [1]使用match( ...
- Python基础--正则表达式语法及其操作
# 正则表达式语法 # 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条 ...
- python基础(正则表达式)
http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 转载于:https://www.cnblogs.com/wanderingzj/ ...
- 【Python基础】Python正则表达式入门到入魔
关于正则表达式,很多人认为,使用的时候查询下就可以,没必要深入学习,但是知识与应用永远都是螺旋辩证的关系,有需要查询也无可厚非,但是先掌握知识,可以让应用更创新,更深入,超越他人,必须要先掌握大量的深 ...
- 风变编程python助教_花30天时间,学完了风变编程Python基础语法课
原标题:花30天时间,学完了风变编程Python基础语法课 20节实打实的课程,1个月时间,我终于学完了风变编程的Python基础语法课.刚开始学的时候,就有人问我感受怎么样,当时本着未知全貌不予置评 ...
- Python基础(十一)--正则表达式
Python基础(十一)--正则表达式 1 简述 正则表达式可以对指定的字符串与模式之间执行模式匹配.模式可以是普通的字符串,也可以是含有特殊意义字符的字符串.通过正则表达式,我们可以进行查找,校验等 ...
最新文章
- python实现单例_Python 实现单例模式
- 使用WC“.NET研究”F实现SOA面向服务编程——简单的WCF开发实例
- 会话技术(session/cookie)
- 学习方法之04提取练习,永远都不会忘的记忆方法
- Codeforces Round #243 (Div. 2) A~C
- ConfigParser.InterpolationSyntaxError: ‘%‘ must be followed by ‘%‘ or ‘(‘, found: “%‘“
- iphone照片永久删除怎么恢复_微信数据怎么永久删除不被恢复?只删除聊天记录没用,打开这里彻底删除!...
- oracle ora 16014,ORA-16014 ORA-00312错误解决
- 心音与心电信号分析之一--6.26--心音信号数字滤波
- oracle禁止访问监听,关于ORACLE数据库监听自动停止解决一例
- 图像识别利用计算机对图像进行,图像识别方法
- mp4文件如何转换为webm格式 1
- 淘宝返利公众号开发、淘宝联盟API权限申请及对接详细教程
- android什么叫服务器,Android系统中神秘的Bootloader究竟是什么
- linux 进程无法启动,linux6.*无法正常启动has进程解决方案
- 关于麻将和牌算法的那些事
- 锂离子电池和燃料电池特性介绍
- 这些有趣的AI人脸特效背后,腾讯云都做了什么?
- Json和List互相转化
- ​用机器学习和神经科学解码大脑信号