gpt4 book ai didi

python - 如何从字符串中获取正则表达式匹配的起始位置,而不在字符串本身中包含匹配的长度?

转载 作者:行者123 更新时间:2023-12-03 07:51:31 25 4
gpt4 key购买 nike

这是一个需要解释的复杂问题,并且作为示例更容易展示。

假设我这里有这个字符串:

exampleString = "abcauehafj['hello']jfa['hello']jasfjgafadsf"

所以我们有正则表达式模式:

regex = r"\['hello'\]"

现在,我想做的是获取 exampleString 中正则表达式匹配的起始位置。这将是 [10, 22],我目前使用以下代码计算:

import re
matches = re.finditer(regex, exampleString)

start_pos = []
for match in matches:
start_pos.append(match.start())

现在的问题是,我不想将 ['hello'] 的长度包含到字符串本身中。所以我真正想要的 start_pos 是 [10, 13]。在不影响字符串的情况下执行此操作的最佳方法是什么?

最佳答案

您可以使用这个:

import re

exampleString = "abcauehafj['hello']jfa['hello']jasfjgafadsf"
regex = r"\['hello'\]"

matches = re.finditer(regex, exampleString)

start_pos = []
i = 0
for match in matches:
start_pos.append(match.start() - i * len(match.group()))
i = i + 1

print (start_pos)

输出:

[10, 13]

这里:

  • 我们在 for 循环中使用计数器 i
  • 我们从起始位置减去 i 乘以比赛长度

关于python - 如何从字符串中获取正则表达式匹配的起始位置,而不在字符串本身中包含匹配的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76964787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com