在Python脚本中,对于某些形式的C ++代码中的每个方法定义:
return_value ClassName::MethodName(args)
{MehodBody}
我需要提取三个部分:类名,方法名和方法体,以便进一步处理。查找和提取ClassName和MethodName很简单,但有没有简单的方法来提取方法的主体?里面可能有'{'
和'}'
吗?或者正则表达式不适合这样的任务?
答案 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 ++编程语言书”
中