使用re在python上搜索十六进制数

时间:2011-12-03 09:11:05

标签: python regex

我正在处理一个html文本文件,并按如下方式搜索十六进制数字:

example    \xb7\xc7\xa0....

我尝试使用此代码

t=re.findall (r'\\x[0-9a-fA-F]+', line)

但我只能获得空名单。

请告诉正确的编写代码的方式。

3 个答案:

答案 0 :(得分:2)

如果反斜杠在正则表达式中转义,则代码可以正常工作:

t = re.findall (r'\\x[0-9a-fA-F]+', line)

结果:

['\\xb7', '\\xc7', '\\xa0']

ideone:http://ideone.com/MPO5j


如果它不起作用,可能是因为你的字符串包含文字二进制字符。然后尝试这样的事情:

t = re.findall (r'[\x80-\xff]', line)

ideone:http://ideone.com/ChIsh

答案 1 :(得分:2)

对我来说很好。有两种情况可以解释您的问题:

  1. 您通过将字符串分配给变量line来测试这一点,如下所示:

    line = 'example    \xb7\xc7\xa0....'
    

    在这种情况下,您需要转义反斜杠:

    line = 'example    \\xb7\\xc7\\xa0....'
    
  2. 您正在以Python字符串的形式查看文件或行的内容,因此您看到的\xb7实际上是代码为B7十六进制的字符,而不是字符序列{{1 }}。

答案 2 :(得分:0)

您的代码适用于我:

>>> line = r'\xb7\xc7\xa0....'
>>> t=re.findall (r'\\x[0-9a-fA-F]+', line)
>>> t
['\\xb7', '\\xc7', '\\xa0']