【问题标题】:How to get all the indexes of leading zeroes using regex in python如何在python中使用正则表达式获取前导零的所有索引
【发布时间】:2022-11-03 01:02:55
【问题描述】:

在 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))

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

【问题讨论】:

标签: python regex python-re


【解决方案1】:

您可以执行以下操作:

import re

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


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() 对象。

我使用0+ 作为模式。无需检查零之后的其他字符。 是单词边界,这里的意思是,零应该在单词的开头。

【讨论】:

  • 这看起来很棒,谢谢!我刚刚开始理解正则表达式,所以我需要问一下,为什么需要 (r"0+") 中的 r?
  • @KatharinaBöhm r"" 创建了一个“原始字符串”。您几乎应该始终将它用于正则表达式模式,因为它可以防止 Python 转义一些转义序列。尝试运行print("hi bye")print(r"hi bye") 以查看差异。
猜你喜欢
  • 2013-03-24
  • 1970-01-01
  • 2011-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多