正则表达式查询非运算符

时间:2014-05-23 05:39:05

标签: python regex

我有一个混合模式的字符,数字和十六进制字符,如下面的

  • \x20\x20\x20asdasd\x20\x20\x20asd\x20a12v\x20123123\x20\x20

使用正则表达式,我只想找出那些不是像asdasd,a12v那样的十六进制模式。 123123

E.x:not(\ [xX] \ d {2})

最终目标是将所有内容转换为十六进制格式。

\x20\x20\x20\x61\x73\x64\x61\x73\x64\x20\x20\x20\x61\x73\x64\x20\x61\x31\x32\x76\x20\x31\x32\x33\x31\x32\x33\x20\x20

怎么做?

感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用正则表达式进行此操作,但它可能非常容易出错,因为您需要使用正则表达式帐户来处理所有其他转义的可能性(例如,八进制),变得相当混乱。 :)

相反,首先尝试使用str.decode取消数据转义:

s = '\\x20\\x20\\x20asdasd\\x20\\x20\\x20asd\\x20a12v\\x20123123\\x20\\x20'
s = s.decode('string-escape')
s = ''.join('\\x%2x' % ord(c) for c in s)

最后一步,可能会更快。但我只是把它们放在一起作为一个例子。