我在Python应用程序中使用正则表达式。
我使用正则表达式运行的字符串包含许多行。
String(我使用的字符串的一部分):
36% [============> ] 55.5 / 86.2 M 426.62 K 1m14s
36% [============> ] 55.5 / 86.2 M 426.62 K 1m14s
36% [============> ] 55.5 / 86.2 M 426.62 K 1m14s
36% [============> ] 55.5 / 86.2 M 426.62 K 1m14s
36% [============> ] 55.8 / 86.2 M 278.57 K 1m52s
36% [============> ] 55.8 / 86.2 M 278.57 K 1m52s
36% [============> ] 55.8 / 86.2 M 278.57 K 1m52s
36% [============> ] 56.2 / 86.2 M 426.19 K 1m12s
36% [============> ] 56.2 / 86.2 M 426.19 K 1m12s
36% [============> ] 56.2 / 86.2 M 426.19 K 1m12s
36% [============> ] 56.7 / 86.2 M 504.32 K 1m 0s
36% [============> ] 56.7 / 86.2 M 504.32 K 1m 0s
36% [============> ] 56.7 / 86.2 M 504.32 K 1m 0s
36% [============> ] 57.1 / 86.2 M 409.67 K 1m13s
36% [============> ] 57.1 / 86.2 M 409.67 K 1m13s
36% [============> ] 57.1 / 86.2 M 409.67 K 1m13s[2K
36% [============> ] 57.6 / 86.2 M 453.01 K 1m 5s[2K
36% [============> ] 57.6 / 86.2 M 453.01 K 1m 5s
字符串来自文件。
我使用这个(Python)正则表达式:
(.*%) (.*) (.*) / (.*) (M) (.*) (.*)
当我从re(Python正则表达式库)获取数据时,只打印第一行的数据。
我想要最后一行的数据。
更多详情:
我使用的是GNU / Linux和Python 2.7.5版本
答案 0 :(得分:1)
正如你所说,你想要最后一行的数据,而你正在使用正则表达式。因此,您应首先从字符串中删除您不想要的所有内容。
让我们将content
变量定义为:
content = '36% [============> ] 55.5 / 86.2 M 426.62 K 1m14s
36% [============> ] 55.5 / 86.2 M 426.62 K 1m14s
36% [============> ] 55.5 / 86.2 M 426.62 K 1m14s
[...]'
在这种情况下,您应该content.splitlines()[-1]
获取最后一行并在其上应用正则表达式。这种方法有两个好处:
答案 1 :(得分:0)
您只在正则表达式中显示3个文字,%
,/
和M
。
如果移除了这些内容,则您的正则表达式会变为.*%.*.*/.*M.*.*
减少到.*%.*/.*M.*
。
如果您只想要包含%
,/
和M
的最后一行,请将其更改为
(?-s).*%.*/.*M.*\s*$
(?-s)
修饰符确保Dot与换行符不匹配(通常是默认值)
并且,确保不使用多线修改器(通常是默认值)
这样$
表示字符串结束。
添加您的群组以捕捉您想要的内容。