2

我正在尝试从二进制文件中提取一些字符串。当我在 linux 中将此正则表达式与字符串一起使用时,它可以正常工作,但在 python 中不起作用。

字符串中:

strings -n 3 mke2fs | grep -E '^([0-9][0-9]*(\.[0-9]+)+)'

结果:1.41.11

蟒蛇

import re

f = open("mke2fs","rb").read()
for c in re.finditer('^([0-9][0-9]*(\.[0-9]+)+)',f):
 print c.group(1)

结果是空的。我该如何解决这个问题?是因为我的 Python 版本(我使用的是 Python 2.7)吗?我尝试使用正则表达式(另一种替代方法)仍然没有结果。

4

1 回答 1

6

您需要re.MULTILINE标志 for^才能像 grep 一样处理您的文本。

顺便说一句,使用起来更具可读性\d

for c in re.finditer(r'^(\d+(\.\d+)+)', f, re.MULTILINE):
    print c.group(1)
于 2013-02-26T02:37:29.653 回答