为什么这个正则表达式不能在python上工作

2024-10-03 15:22:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图从二进制文件中提取一些字符串。当我在linux中将这个正则表达式用于字符串时,它可以正常工作,但在python中不起作用。你知道吗

字符串中

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

结果:1.41.11

在python中:

import re

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

结果为空。我如何解决这个问题?是不是因为我的Python版本(我使用的是python2.7)?我试着使用regex(另一种重新选择)仍然没有结果。你知道吗


Tags: 文件字符串importreforreadlinux二进制
1条回答
网友
1楼 · 发布于 2024-10-03 15:22:35

你需要re.MULTILINE标志^才能像grep那样处理你的文本。你知道吗

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

for c in re.finditer(r'^(\d+(\.\d+)+)', f, re.MULTILINE):
    print c.group(1)

相关问题 更多 >