3分钟内理解Python的re模块中match、search、findall、finditer的区别
来源:互联网 发布:go并发编程实战第二版 编辑:程序博客网 时间:2024/05/16 17:29
re就Python中用于正则表达式相关处理的类,这四个方法都是用于匹配字符串的,具体区别如下:
match
匹配string 开头,成功返回Match object, 失败返回None,只匹配一个。
search
在string中进行搜索,成功返回Match object, 失败返回None, 只匹配一个。
findall
在string中查找所有 匹配成功的组, 即用括号括起来的部分。返回list对象,每个list item是由每个匹配的所有组组成的list。
finditer
在string中查找所有 匹配成功的字符串, 返回iterator,每个item是一个Match object。
不多说概念,直接看栗子!
#!/usr/bin/env python# -*- coding:utf-8 -*-from __future__ import print_functionimport recontent = '333STR1666STR299'regex = r'([A-Z]+(\d))'if __name__ == '__main__': print(re.match(regex, content)) ##content的开头不符合正则,所以结果为None。 ##只会找一个匹配,match[0]是regex所代表的整个字符串,match[1]是第一个()中的内容,match[2]是第二对()中的内容。 match = re.search(regex, content) print('\nre.search() return value: ' + str(type(match))) print(match.group(0), match.group(1), match.group(2)) result1 = re.findall(regex, content) print('\nre.findall() return value: ' + str(type(result1))) for m in result1: print(m[0], m[1]) result2 = re.finditer(regex, content) print('\nre.finditer() return value: ' + str(type(result2))) for m in result2: print(m.group(0), m.group(1), m.group(2)) ##字符串
输出:
None re.search() return value: <TYPE ?_sre.SRE_Match?>STR1 STR1 1 re.findall() return value: <TYPE ?list?>STR1 1 STR2 2 re.finditer() return value: <TYPE ?callable-iterator?>STR1 STR1 1 STR2 STR2 2
试着把regex最外边的括号去掉,即regex = r'[A-Z]+(\d)'
,组的个数就会减少一个:
#!/usr/bin/env python# -*- coding:utf-8 -*-from __future__ import print_functionimport recontent = '333STR1666STR299'regex = r'[A-Z]+(\d)'if __name__ == '__main__': print(re.match(regex, content)) ##content的开关不符合正则,所以结果为None。 ##只会找一个匹配,match[0]是regex所代表的整个字符串,match[1]是第一个()中的内容,match[2]是第二对()中的内容。 match = re.search(regex, content) print('\nre.search() return value: ' + str(type(match))) print(match.group(0), match.group(1)) result1 = re.findall(regex, content) print('\nre.findall() return value: ' + str(type(result1))) for m in result1: print(m[0]) result2 = re.finditer(regex, content) print('\nre.finditer() return value: ' + str(type(result2))) for m in result2: print(m.group(0), m.group(1)) ##字符串
输出:
None re.search() return value: <TYPE ?_sre.SRE_Match?>STR1 1 re.findall() return value: <TYPE ?list?>1 2 re.finditer() return value: <TYPE ?callable-iterator?>STR1 1 STR2 2
阅读全文
0 0
- 3分钟内理解Python的re模块中match、search、findall、finditer的区别
- Python中re的match、search、findall、finditer区别
- Python中re的match、search、findall、finditer区别
- Python中re的match、search、findall、finditer区别
- python re的findall和finditer
- Python RE模块中search()和match()的区别
- Python RE模块中search()和match()的区别
- Python RE模块中search()和match()的区别
- Python RE模块中search()和match()的区别
- Python 正则表达式的使用(re findall finditer match search)- 千月的python linux 系统管理指南学习笔记(13)
- 正则表达式之match search findall finditer的用法
- python error之re模块的findall与match错误
- Python中的re.search和re.findall之间的区别
- Python3的re.match()、re.search()和re.findall()
- Python3的re.match()、re.search()和re.findall()
- re.findall and re.search的区别
- re.search与re.findall的区别
- python正则表达式模块re中search和match方法的区别
- BZOJ 3823: 定情信物
- OSG截图
- jQuery选择器
- C# 字符串string的使用
- Jquery中each的三种遍历方法
- 3分钟内理解Python的re模块中match、search、findall、finditer的区别
- MSP430 捕获模式,定时器A连续计数模式。有软件循环产生方波信号,信号同时接入 P1.1和P1.2 ,由CCR1由CCR1获取周期,CCR0确定信号占空比
- (ASP.NET)怎么利用Repeater控件在一行显示多个数据
- java命令大全
- bzoj 3790: 神奇项链 manachar+dp+树状数组
- 2.1节
- 【Shader实战篇】PBR贴图之Albedo贴图
- spring的AOP(一)----AOP的概念及其相关术语
- 解决post提交乱码过滤器