regex 如何在python中使用正则表达式获取前导零的所有索引

von4xj4u  于 2022-11-18  发布在  Python
关注(0)|答案(1)|浏览(88)

使用Python中的Regex(仅库re),我想创建一个函数,它给出字符串中所有前导0的位置。
例如,如果字符串为:我的房子有01花园和003房间。我想让我的函数返回13,27和28。
我试着举例:

import re
string = "My house has 01 garden and 003 rooms."
pattern = "(0+)[1-9]\d*"

print(re.findall(pattern,string))

显然,输出给我匹配,但没有位置...

1cklez4t

1cklez4t1#

您可以执行以下操作:

import re

text = "My house has 01 garden and 003 rooms."
pattern = re.compile(r"\b0+")

def leading_zeros_index(s: str) -> list:
    return [i for m in pattern.finditer(s) for i in range(m.start(), m.end())]

print(leading_zeros_index(text))

输出:

[13, 27, 28]

基本上,您使用.finditer()来获取匹配对象,然后从匹配对象的.start().end()创建一个range()对象。
我用\b0+作为模式。没有必要检查零后面的其他字符。\b是单词边界,这里的意思是,零应该在单词的开头。

相关问题