re.findall没有返回匹配

时间:2016-03-10 11:11:18

标签: python regex

目前制作一个脚本来运行文档并捕获两个标记之间的所有数据然后处理信息。但是当使用re.findall时,它返回没有匹配,我们正在查找的字符串是否存在于bin文件中,首先读取文件我们已经使用了binascii.hexlify然后将hexa.decode用于ascii,因为我们有另一个类似的脚本按预期工作。 我们的比赛如下:

val = re.findall('02E800000000000000(.*)00+',hexa_string)

每个段以02E800000000000000开头,并以00结束填充,但是当运行此脚本并打印该值时,脚本只返回[]。然而,开始&终点在我们的剧本中顽固地存在,有没有人有任何想法为什么它根本不会返回任何东西?我们在这里有点难过。

1 个答案:

答案 0 :(得分:1)

试试这个:

val = re.findall('02[E|e]800000000000000(.*)00+',hexa_string)

查看你的hexa_string示例值,看起来你们有小写和大写的问题。

注意“e”是小写的,同时模式是大写的。

这个案子对我有用:

In [10]: hexa_string = "02E800000000000000068235686920054000000000"

In [11]: val = re.findall('02E800000000000000(.*)00+',hexa_string)

In [12]: val
Out[12]: ['0682356869200540000000']

但它不适用于小箱。