正则表达式 - 函数体提取

时间:2010-06-15 10:48:52

标签: python regex

在Python脚本中,对于某些形式的C ++代码中的每个方法定义:

return_value ClassName::MethodName(args)
{MehodBody} 

我需要提取三个部分:类名,方法名和方法体,以便进一步处理。查找和提取ClassName和MethodName很简单,但有没有简单的方法来提取方法的主体?里面可能有'{''}'吗?或者正则表达式不适合这样的任务?

2 个答案:

答案 0 :(得分:3)

>>> s = """return_value ClassName::MethodName(args)
{MehodBody {} } """
>>> re.findall(r'\b(\w+)::(\w+)\([^{]+\{(.+)}', s, re.S)
[('ClassName', 'MethodName', 'MehodBody {} ')]

答案 1 :(得分:1)

我建议你使用parser module而不是regexp,因为它会处理多行功能,不同缩进等内容,并会在格式错误的输入上中止,以便您可以更好地管理事物。 “如果可以的话,避免使用regexps”是我所遵循的规则之一,因为它们往往更加麻烦,因为它们是值得的。


修改 哦好的。我误解了你的问题。我以为你想解析Python代码本身。我用谷歌搜索了一下this,但它只是C。也许你可以扩展它? C ++的语法出现在“C ++编程语言书”