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

标签 python regex

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

原始字符串:

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/

相关文章:

python - 在 Python 中合并 Pandas DataFrame

python - 以 Object 为参数的类

php - 解析字符串php并替换子字符串

php - 通过PHP从网站提取数据

python - 使用 Python 精确替换内容中的单词

java - 如何在 ubuntu 上设置 Pycharm 和 JDK

iteration - 以 n 的倍数迭代 python 序列?

python /集/字典/初始化

java - 多片段文件名的正则表达式模式

python - 如何使用正则表达式更改具有特定值的字符串中的值?