You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 02:25:53