2016-01-09 4 views
0

Как я могу вернуть строку, на которой нет фигурных скобок? Пример: в следующем коде я хочу, чтобы pattern.group (3) соответствовал только коду без фигурных скобок.Паттерн регулярного выражения Python без фигурных скобок

pattern = re.search('(.*)#ifdef (.*?)if(.*?)#endif(.*?){(.*?)}(.*)',codigo,re.DOTALL) 

Так

#ifdef expression_1 
    if (condition_1) 
#endif 
{ 
    //lines of code 
} 

является suposed, чтобы соответствовать, и

#ifdef SIZE == 1     
     if(x == 2){ 


      //lines of code 2 


     } 
#endif 

нет.

+0

Почему вы не проверяете возвращенные группы? –

ответ

0

Я бы просто окружал весь фрагмент фигурных скобок в группе, не участвующей в съемке, и делал ее необязательной. Таким образом, вы все равно получите объект соответствия регулярному выражению с остальными заполненными группами.

'(.*)#ifdef (.*?)if(.*?)#endif(.*?)(?:{(.*?)})?(.*)' 
0

На самом деле я искал что-то вроде этого

re.search('(.*)#ifdef (.*?)if([^{]*?)#endif(.*?){(.*?)}(.*)',codigo,re.DOTALL) 

Итак, я что гарантируем не любой {в группе (3).

Смежные вопросы