如何用Python的re库正则获取字符串中所有前导零的索引
获取字符串中所有前导零的位置
要获取前导零的具体位置,仅用re.findall无法实现,因为它只返回匹配的字符串内容。我们可以借助re.finditer获取每个匹配的位置信息,再逐个提取每个前导零的索引:
import re def get_leading_zero_positions(s): # 正则匹配带前导零的数字,捕获连续的前导零部分 pattern = re.compile(r"(0+)[1-9]\d*") zero_positions = [] # 遍历所有匹配结果 for match in pattern.finditer(s): # 获取捕获到的前导零序列的起始索引 start_idx = match.start(1) # 前导零的长度等于捕获组的字符串长度 zero_count = len(match.group(1)) # 逐个计算每个前导零的位置并加入结果列表 for i in range(zero_count): zero_positions.append(start_idx + i) return zero_positions # 测试示例 string = "My house has 01 garden and 003 rooms." print(get_leading_zero_positions(string)) # 输出: [13, 27, 28]
代码说明:
re.compile预编译正则表达式,提升重复匹配的效率;pattern.finditer返回迭代器,每个元素是匹配对象,包含匹配的位置、内容等详细信息;match.start(1)获取第一个捕获组(即连续前导零序列)的起始索引;- 通过遍历前导零序列的长度,逐个计算每个零的具体位置并收集结果。
内容的提问来源于stack exchange,提问作者Katharina Böhm
相关产品推荐
相关产品推荐

