首页 > 解决方案 > 试图以 '\x0a' 格式查找不类似于十六进制的字符

问题描述

我正在解析一个包含文件幻数但格式不一致的字符串。一些模式采用十六进制格式,格式为 '\x0a'(字符串包含转义字符,因此我显然需要搜索两个 \'s),其他模式是直接 ASCII 字符,其余模式介于两者之间。

我希望制作一个正则表达式来查找字符串中还不是十六进制的字符。我尝试使用反转标志搜索以下十六进制值。

(?!\\\\x[0-9 a-f]{2})

这没有按预期工作,因为它在完全匹配后看到下一个字符中的 x 并与之匹配。

>>> test = "\\x50K\\x03\\x04"
>>> re.search("(?!\\\\x[0-9 a-f]{2})" test)
<re.Match object; span(1, 1), match=''>

如果没有得到积极的结果并自己倒置它们,我不知道如何进行。

谢谢!

标签: pythonregexpython-3.xspecial-characters

解决方案


你可以用这样的东西替换十六进制值:re.sub(r'\\x[0-9 a-f]{2}','', your_line)并使用剩下的——非十六进制字符


推荐阅读