使用python regexp提取IF多行条件

时间:2018-09-28 11:16:44

标签: python regex

我正在尝试使用python regexp在.c文件中提取if块的条件。该字符串将如下所示:

if((x==z)&&(x<y))

if(x==9) 

if((x==10) &&
   (y==9))

所以可能有2种变化。

  1. 里面可能有嵌套括号,也可能没有。
  2. 多个子条件可以在不同的行中。

预期输出为: 最外层支架内部的完整条件。

我已经编写了这段代码来检测单行条件,但是卡在了多行条件下。

import re
with open("code.txt", "r") as ins:
array = []
for line in ins:
    array.append(line)
    trimLine = line.lstrip();
    trimLine = trimLine.rstrip();


    result = re.findall(r'if', trimLine)
    if result != []:
        print (re.search( "\((.*)\)" ,trimLine).group(1))

TIA提供任何形式的指导。

1 个答案:

答案 0 :(得分:0)

默认为与换行不匹配。 您应该使用re.DOTALL,这样它也将与新行匹配。

enter image description here