gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 04:13:15 25 4
gpt4 key购买 nike

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

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

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

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

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

最佳答案

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

<\1>\1<\2><\3>

Regex Demo

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

import re

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

如您所愿打印

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

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

关于python - 如何在 Python 中每个正则表达式匹配组之前和之后添加字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55937452/

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