gpt4 book ai didi

python - 如何使用 Python RegEx 切换字符串中的两个元素?

转载 作者:太空狗 更新时间:2023-10-30 00:43:12 30 4
gpt4 key购买 nike

我正在尝试切换字符串中的两个元素,同时保持所有其他字符不变。这是一个例子:

原始字符串:

r'xyzA*12*pqR*stB*HS*lmN*opA*45*a4N*gB*SD*drtU*ghy'

要求的输出:

r'xyzA*HS*pqR*stB*12*lmN*opA*SD*a4N*gB*45*drtU*ghy'

请注意,A* 和 B* 之后的元素互换了。

我能够编译一个 RegEx 模式,让我可以像下面这样替换元素:

>>> import re
>>> pattern = re.compile(r'A\*(.*?)\*.*?B\*(.*?)\*')
>>> M = pattern.findall(string)
>>> M
[('12', 'HS'), ('45', 'SD')]

在这个阶段之后,我需要你的帮助来了解如何使用 sub 来获取所需的字符串。

最佳答案

一种选择是同时捕获两个感兴趣的模式之间的模式,并使用反向引用对它们重新排序:

s = r'xyzA*12*pqR*stB*HS*lmN*opA*45*a4N*gB*SD*drtU*ghy'

import re
pattern = re.compile(r'A\*(.*?)(\*.*?B\*)(.*?)\*')

#keep the position of the second group and switch the position of the first and third group
pattern.sub(r"A*\3\2\1*", s)
# 'xyzA*HS*pqR*stB*12*lmN*opA*SD*a4N*gB*45*drtU*ghy'

关于python - 如何使用 Python RegEx 切换字符串中的两个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42117857/

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