如何在 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])
并将其替换为
<><><>
您可以修改代码以使用 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*
相同,除了组中捕获的数字将只是一个并且恰好是最后一个匹配的数字。
我有一个字符串和一个包含多个组的正则表达式。我想在每个匹配组之前和之后添加一些字符串。我该怎么做?以下是演示代码,仅用于帮助描述我的问题。
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])
并将其替换为
<><><>
您可以修改代码以使用 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*
相同,除了组中捕获的数字将只是一个并且恰好是最后一个匹配的数字。