如何从re.finditer返回的SRE_Match对象中获取span元组与匹配字符串?
获取SRE_Match对象中的span和匹配字符串
嘿,这问题我熟!你已经通过re.finditer()拿到了匹配对象的列表,接下来只需要调用每个SRE_Match对象的内置方法,就能轻松拿到你要的内容啦。
具体方法:
- 要获取匹配到的字符串:调用
group()方法,默认不传参数就返回整个匹配的内容。比如你代码里的m[0].group()就能得到'(xf)'。 - 要获取位置元组span:调用
span()方法,它会直接返回匹配内容在原字符串中的起始和结束索引,也就是你要的(7, 11)。
修改后的完整代码示例:
import re s = 'sd(asdf(xf))fg' # 直接遍历finditer返回的迭代器就行,不用转成列表也可以 for match in re.finditer('\([A-z ]+\)', s): print(f"匹配的字符串:{match.group()}") print(f"对应的span元组:{match.span()}")
运行这段代码后,你就能看到如下输出:
匹配的字符串:(xf) 对应的span元组:(7, 11)
其实这些方法在官方文档里是明确写了的,可能你之前没注意到每个匹配对象的这些属性~
内容的提问来源于stack exchange,提问作者Daniel Restrepo
相关产品推荐
相关产品推荐

