Извлечь условие IF multiline, используя регулярное выражение Python

1

Я пытаюсь извлечь условие блока if в файле.c, используя python regexp. Строка будет примерно такой:

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
    Для более сложных случаев (встроенный if, вызов функции в условии с многострочными аргументами, ...) вам понадобится более сложная технология, чем регулярное выражение, см. Github.com/eliben/pycparser
  • 0
    я смотрел в этом ранее. Проблема заключалась в том, что моя существующая кодовая база была на C ++. pycparser не поддерживает это. Также это было намного сложнее того, что я хотел сделать. Моя цель состоит в том, чтобы извлечь управляющий поток одной функции (если, иначе, elseif, switch-case-default, break, continue, loop) без хлопот с предварительной обработкой. Просто базовое резюме - это то, чего я хочу достичь.
Теги:

1 ответ

0

по умолчанию . не соответствуют новой строке. вы должны использовать re.DOTALL, чтобы он соответствовал новой строке.

Изображение 174551

Ещё вопросы

Сообщество Overcoder
Наверх
Меню