Python 使用正则表达式替换特殊的字符串组

Python replace special group of string using regex

目前我的项目在 .net C# 上运行,框架版本为 4.5.0。其中还集成了使用 IronPython 执行某些 python 脚本的功能。 现在我正在寻找用其他字符串替换一些特殊文本,例如

PV1|1|??|??^^^??^^^??|||||??^??^??^??^^??^^^??~??^??^??^??^^??^^^??~??^??^??^??^^??^^^??|??^??^??^??^^??^^^?? ??~??^??^??^??^^??^^^?~??^??^??^??^^??^^^??~??^??^??^??^^??^^^??~??^??^??^??^^??^^^??~??^??^??^?? ??^^??^^^??~??^??^??^??^^??^^^??^??^^??^^^??^??^^??^^^??^^^??^^^??^??^^^??^^^???^??^^^??^??^^^??^^^??^^??^^^??^??^^??^^^??^^^??^^??^^^??|??||||||??^^^.^^^|??||??|||||||||||||||||||??||??|||??||||||

ORC|??||??||||||??|^??^^^??^^^^??

OBR|1|??^??|??^??|??^^^* ??|||??|??||||||||||||||??||??|??|||||||??|

ZDS|??|^TEST^ONLY (TESTONLY)^^^TEST SUPPORT^^^^TEST|??|COMPLETED

OBX|1|??|??^??

从上面的文字我想用 OBX|1|?? 替换 ZDS|?? 的行ZDS 中可用的其余字符串将添加到 OBX。如果文本中有任何 OBX 字符串作为原始 OBX,也希望保留。

我在 Iron 下面试过 Python

import re

regEx = re.compile('^ZDS\|([^|]+)\|([^|]+)\|([^|]+)\|([^|\n\r ]+)')
Message = regEx.sub('OBX|1|FT|||~~~|||', Message)

还有

Message = re.sub(r'^ZDS\|([^|]+)\|([^|]+)\|([^|]+)\|([^|\n\r ]+)', 'OBX|1|FT|||~~~|||', Message, count=1)

Message= str.replace(Message, '^ZDS\|([^|]+)\|([^|]+)\|([^|]+)\|([^|\n\r ]+)','OBX|1|FT|||~~~|||')

但以上所有选项均无效。

我想要像

这样的输出

PV1|1|??|??^^^??^^^??|||||??^??^??^??^^??^^^??~??^??^??^??^^??^^^??~??^??^??^??^^??^^^??|??^??^??^??^^??^^^?? ??~??^??^??^??^^??^^^?~??^??^??^??^^??^^^??~??^??^??^??^^??^^^??~??^??^??^??^^??^^^??~??^??^??^?? ??^^??^^^??~??^??^??^??^^??^^^??^??^^??^^^??^??^^??^^^??^^^??^^^??^??^^^??^^^???^??^^^??^??^^^??^^^??^^??^^^??^??^^??^^^??^^^??^^??^^^??|??||||||??^^^.^^^|??||??|||||||||||||||||||??||??|||??||||||

ORC|??||??||||||??|^??^^^??^^^^??

OBR|1|??^??|??^??|??^^^* ??|||??|??||||||||||||||??||??|??|||||||??|

OBX|1|FT|||^TEST^ONLY (TESTONLY)^^^TEST SUPPORT^^^^TEST~??~COMPLETED

OBX|1|??|??^??

我终于找到了自己问题的答案 原消息是 留言 =

PV1|1|??|??^^^??^^^??|||||??^??^??^??^^??^^^??~??^??^??^??^^??^^^??~??^??^??^??^^??^^^??|??^??^??^??^^??^^^?? ??~??^??^??^??^^??^^^?~??^??^??^??^^??^^^??~??^??^??^??^^??^^^??~??^??^??^??^^??^^^??~??^??^??^?? ??^^??^^^??~??^??^??^??^^??^^^??^??^^??^^^??^??^^??^^^??^^^??^^^??^??^^^??^^^???^??^^^??^??^^^??^^^??^^??^^^??^??^^??^^^??^^^??^^??^^^??|??||||||??^^^.^^^|??||??|||||||||||||||||||??||??|||??||||||

ORC|??||??||||||??|^??^^^??^^^^??

OBR|1|??^??|??^??|??^^^* ??|||??|??||||||||||||||??||??|??|||||||??|

OBX|1|FT|||^TEST^ONLY (TESTONLY)^^^TEST SUPPORT^^^^TEST~??~COMPLETED

OBX|1|??|??^??

并在 Python

import re

Message = re.sub(r'ZDS\|([^|]+)\|([^|]+)\|([^|]+)\|([^|\n\r ]+)', 'OBX|1|FT|||'+r'~~~|||', Message, count=1)
Message = re.sub(r'ZDS\|([^|]+)\|([^|]+)\|([^|]+)\|([^|\n\r ]+)', 'OBX|1|FT|||~~~|||', Message, count=1)