如何在 Python 中每个正则表达式匹配组前后添加字符串?

How to add string before and after each regex matched groups in Python?

我有一个字符串和一个包含多个组的正则表达式。我想在每个匹配组之前和之后添加一些字符串。我该怎么做?以下是演示代码,仅用于帮助描述我的问题。

data = "aa11bb123cc3333dd12eeeff3"
regex = re.compile(r"([a-z])(\d)(\d)(?=[a-z])")

预期的结果是(使用<>包围匹配的组):

<a>a<1><1>bb123cc3333<d>d<1><2>eeeff3

也请考虑像 (\d)* 这样的正则表达式组,我不知道事先有多少组。

您可以使用当前的正则表达式 ([a-z])(\d)(\d)(?=[a-z]) 并将其替换为

<><><>

Regex Demo

您可以修改代码以使用 re.sub 并获得预期的输出。

import re

data = "aa11bb123cc3333dd12eeeff3"
regex = re.compile(r"([a-z])(\d)(\d)(?=[a-z])")
print(re.sub(regex, r'<><><>', data))

打印如您所愿,

<a>a<1><1>bb123cc3333<d>d<1><2>eeeff3

另外,当你更新你的 post 时,只是澄清这个正则表达式 (\d)* 只有一个组,而不是组外有 *,它将使组数增加。 (\d)* 的行为与 \d* 相同,除了组中捕获的数字将只是一个并且恰好是最后一个匹配的数字。