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)
目前我的项目在 .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)