没有花括号的Python正则表达式模式

时间:2016-01-09 01:37:05

标签: python regex

如何返回一个没有花括号的字符串? 例如,在下面的代码中我想要pattern.group(3)只匹配没有花括号的代码。

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

所以

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

用于匹配,

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


            //lines of code 2


        }
#endif

2 个答案:

答案 0 :(得分:0)

我只是围绕非捕获组中的整个花括号部分并使其成为可选项。这样你仍然可以获得一个正则表达式匹配对象,并填充其他组。

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

答案 1 :(得分:0)

其实我在寻找类似的东西

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

所以,我保证在组(3)中没有{。