如何使用正则表达式查找某字符的所有出现并获取对应位置?
正则查找所有匹配字符位置的实现方法
你可以使用re.finditer()方法满足需求,该方法会返回所有匹配结果的迭代器,每个迭代元素的结构和re.search()的返回值完全一致,可直接调用start()/end()/span()获取对应匹配的位置信息。
完整实现代码如下:
import re palabra = "hola mundo" caracter = "o" # 拿到所有匹配结果 all_matches = list(re.finditer(caracter, palabra)) # 遍历输出每个匹配的位置 for item in all_matches: print(f"匹配区间:{item.span()},起始索引:{item.start()},结束索引:{item.end()}") # 统计出现次数,判断是否大于1 match_count = len(all_matches) print(f"指定字符总出现次数:{match_count}") if match_count > 1: print("该字符出现次数多于1次")
运行效果如下:
匹配区间:(1, 2),起始索引:1,结束索引:2
匹配区间:(9, 10),起始索引:9,结束索引:10
指定字符总出现次数:2
该字符出现次数多于1次
相关方法区别说明
re.search():仅返回第一个匹配的匹配对象,无匹配时返回Nonere.findall():返回所有匹配的字符串组成的列表,无法获取位置信息re.finditer():返回所有匹配的匹配对象迭代器,可获取每个匹配的全量信息
内容的提问来源于stack exchange,提问作者Victotem
相关产品推荐
相关产品推荐

