gpt4 book ai didi

python - 匹配除模式以外的所有内容并替换为字符串

转载 作者:太空宇宙 更新时间:2023-11-03 12:36:36 26 4
gpt4 key购买 nike

我想使用 python 来操作我拥有的字符串。
基本上,我想在每个十六进制字节之前加上“\x”,除了已经在前面加上“\x”的字节。

我原来的字符串是这样的:

mystr = r"30336237613131\x90\x01\x0A\x90\x02\x146F6D6D616E64\x90\x01\x06\x90\x02\x0F52656C6174\x90\x01\x02\x90\x02\x50656D31\x90\x00"

我想从中创建以下字符串:

mystr = r"\x30\x33\x62\x37\x61\x31\x31\x90\x01\x0A\x90\x02\x14\x6F\x6D\x6D\x61\x6E\x64\x90\x01\x06\x90\x02\x0F\x52\x65\x6C\x61\x74\x90\x01\x02\x90\x02\x50\x65\x6D\x31\x90\x00"

我想到了使用正则表达式来匹配除了/\x../g 之外的所有内容,并将每个匹配项替换为“\x”。可悲的是,我为此苦苦挣扎但没有成功。此外,我不确定使用正则表达式是解决这种情况的最佳方法。

最佳答案

正则表达式:(?:\\x)?([0-9A-Z]{2}) 替换:\\x$1

详细信息:

  • (?:) 非捕获组
  • ? 零到一次匹配,匹配字符串\x如果存在。
  • () 捕获组
  • [] 匹配列表 0-9A-Z
  • 中存在的单个字符
  • {n} 完全匹配 n
  • \\x 字符串\x
  • $1 第 1 组。

Python代码:

import re

text = R'30336237613131\x90\x01\x0A\x90\x02\x146F6D6D616E64\x90\x01\x06\x90\x02\x0F52656C6174\x90\x01\x02\x90\x02\x50656D31\x90\x00'
text = re.sub(R'(?:\\x)?([0-9A-Z]{2})', R'\\x\1', text)
print(text)

输出:

\x30\x33\x62\x37\x61\x31\x31\x90\x01\x0A\x90\x02\x14\x6F\x6D\x6D\x61\x6E\x64\x90\x01\x06\x90\x02\x0F\x52\x65\x6C\x61\x74\x90\x01\x02\x90\x02\x50\x65\x6D\x31\x90\x00

Code demo

关于python - 匹配除模式以外的所有内容并替换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48425228/

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