我有一个java代码,我需要在python中解析它。我在python中使用正则表达式来达到这个目的。我成功地找到了方法名称,但是为了找到方法体,我需要用条件写正则表达式。 对于前代码我正在解析?
class abc
{
public void main()
{
//some code
if(blabla)
{
}
else
{
}
//some code
}
public static int method1(int asd,int bad)
{
//body
}
}
我需要输出为[(int,method1,“body”),('void',main,“body”)]
所以我写了正则表达式
r'[public|private|protected]\s+[static]\s+(\w+)\s+(\w+)\(.*\)\n\{'
找到方法名称,但如何查找正文,因为它可能包含多个'{','}'
?
答案 0 :(得分:2)
你不会成功使用正则表达式。你需要的是一个真正的解析器。
我推荐的解析器是pyparsing
,它易于使用和理解。
如果你需要更富有表现力的解析,总会有ANTLR
已经构建了Java语法,并且很容易输出python代码。