Python re正则表达式 findall和finditer 之间的区别/ 如何查看所有包含分组在内的匹配信息
2022/6/12 1:22:37
本文主要是介绍Python re正则表达式 findall和finditer 之间的区别/ 如何查看所有包含分组在内的匹配信息,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
finditer
可以返回对象,而findall
只会返回结果
比如对于如下 content
> **Theorem** > Strategy game and stackelberg game in zero-sum are essentially identical. - 竞争状态 - 维持在一个次优的纳什均衡 - 合作状态 - 确保合作状态能进行下去 > **Folk Theorem** > ... > 在无限重复博弈中,假设存在单阶段NE$a^{*}$以及一个更优的群体策略$\hat{a}$ > 那么存在 $\delta$ 的某取值,可以使$(\hat{a},\hat{a},\dots,\hat{a})$成为SPNE - 存在一个策略,使得各个玩家都有比竞争NE更好的收益
findall
只返回了结果,并且可以看到,在有分组的情况下,findall只返回了分组的结果
finditer
返回了re.Match object,并且包含 span=(0, 92), match='\n> Theorem\n> Strategy game and stackelberg等重要属性,可以获取包含分组在内的完全匹配信息
使用match.group()
就可以恢复出包含分组在内的完整的匹配信息
https://stackoverflow.com/questions/3765024/different-behavior-between-re-finditer-and-re-findall
import re CARRIS_REGEX=r'<th>(\d+)</th><th>([\s\w\.\-]+)</th><th>(\d+:\d+)</th><th>(\d+m)</th>' pattern = re.compile(CARRIS_REGEX, re.UNICODE) mailbody = open("test.txt").read() for match in pattern.finditer(mailbody): print(match) print() for match in pattern.findall(mailbody): print(match)
prints
<_sre.SRE_Match object at 0x00A63758> <_sre.SRE_Match object at 0x00A63F98> <_sre.SRE_Match object at 0x00A63758> <_sre.SRE_Match object at 0x00A63F98> <_sre.SRE_Match object at 0x00A63758> <_sre.SRE_Match object at 0x00A63F98> <_sre.SRE_Match object at 0x00A63758> <_sre.SRE_Match object at 0x00A63F98> ('790', 'PR. REAL', '21:06', '04m') ('758', 'PORTAS BENFICA', '21:10', '09m') ('790', 'PR. REAL', '21:14', '13m') ('758', 'PORTAS BENFICA', '21:21', '19m') ('790', 'PR. REAL', '21:29', '28m') ('758', 'PORTAS BENFICA', '21:38', '36m') ('758', 'SETE RIOS', '21:49', '47m') ('758', 'SETE RIOS', '22:09', '68m')
If you want the same output from finditer
as you're getting from findall
, you need
for match in pattern.finditer(mailbody): print(tuple(match.groups()))
这篇关于Python re正则表达式 findall和finditer 之间的区别/ 如何查看所有包含分组在内的匹配信息的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程