我有一个字符串和一个带有多个组的正则表达式。我想在每个匹配的组之前和之后添加一些字符串。我该怎么做?以下是仅用于帮助描述我的问题的演示代码。
data = "aa11bb123cc3333dd12eeeff3"
regex = re.compile(r"([a-z])\1(\d)(\d)(?=[a-z])")
预期结果是(使用<
和>
包围匹配的组):
<a>a<1><1>bb123cc3333<d>d<1><2>eeeff3
也请考虑像(\d)*
这样的正则表达式组,我不知道事先有多少个组。
答案 0 :(得分:1)
您可以使用当前的正则表达式<a4j:commandLink id="lnk_view"
action ="#{FileUploadController.view}"
style="display: none"
onclick ="startLoad();"
reRender="info"
oncomplete = "stopLoad();">
<f:param name="selectedFile" value="#{file.serialNo}"/>
</a4j:commandLink>
并将其替换为此,
([a-z])\1(\d)(\d)(?=[a-z])
您可以修改代码以使用<\1>\1<\2><\3>
并获得预期的输出。
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)*
相同,只是该组中捕获的数字只是一个,并且恰好是匹配的最后一个数字。