使用python正则表达式

时间:2016-02-17 17:34:40

标签: python regex linux

我正在尝试从字符串中提取类似***。ini的子字符串。 例如,我有

000012: 378:210 File=test1.ini  Cmd:send command1 
000512: 3378:990 File=test2.ini  Cmd:send command2 File=not.ini Cmd: include command

我需要在第一个“File =”之后提取子字符串,并在第一个File = ***。ini之后提取子字符串,即“Cmd:...”直到结束。

所以我想要的结果是:

test1.ini
Cmd:send command1 

test2.ini  
Cmd:send command2 File=not.ini Cmd: include command

我试过了:

re.match("(.*) File=(.*).ini(.*)Cmd:(.*)", line, re.M\re.I)

这适用于第一行,但对于第二行, 我明白了:

test2.ini  Cmd:send command2 File=not.ini  #which is wrong, wanted is: 

test.ini

Cmd: include command

任何人都请帮忙。谢谢。 LJ

2 个答案:

答案 0 :(得分:1)

您可以将此正则表达式与getLine函数一起使用:

re.findall

RegEx Demo

<强>代码:

\bFile=(.+?\.ini)\s+(Cmd:.*)

答案 1 :(得分:1)

。*过于贪心,也没有必要从一开始就匹配。试试这个

re.search("File=([^\.]+.ini).*?(Cmd:.*)", line).groups()