如何在python中使用递归从java代码解析方法体?
我有一个java代码,我需要用python解析它。我成功地找到了方法名,但要找到方法体,我需要编写带条件的正则表达式。 比如我正在解析的代码如何在python中使用递归从java代码解析方法体?,java,python,regex,parsing,Java,Python,Regex,Parsing,我有一个java代码,我需要用python解析它。我成功地找到了方法名,但要找到方法体,我需要编写带条件的正则表达式。 比如我正在解析的代码 class abc { public void main() { //some code if(blabla) { } else { } //some code } public static int method1(int asd,int
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\{'
查找方法名,但如何查找正文,因为它可能包含多个
'{','}'
?正则表达式不会成功。您需要的是一个实际的解析器
我推荐的解析器是,它易于使用和理解
如果您需要更具表现力的解析,那么总是会有
ANTLR
,它已经为Java构建了语法,并且可以轻松输出python代码。但是有没有像递归或基于条件的regx这样的regx来支持这一点呢?正则表达式的哪一部分不会成功,您需要一个实际的解析器还不清楚?正则表达式压力不是这个工作的合适工具。有些人在遇到问题时,会想“我知道,我会使用正则表达式。”现在他们有两个问题