Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中使用递归从java代码解析方法体?_Java_Python_Regex_Parsing - Fatal编程技术网

如何在python中使用递归从java代码解析方法体?

如何在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

我有一个java代码,我需要用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\{'

查找方法名,但如何查找正文,因为它可能包含多个
'{','}'

正则表达式不会成功。您需要的是一个实际的解析器

我推荐的解析器是,它易于使用和理解


如果您需要更具表现力的解析,那么总是会有
ANTLR
,它已经为Java构建了语法,并且可以轻松输出python代码。

但是有没有像递归或基于条件的regx这样的regx来支持这一点呢?正则表达式的哪一部分不会成功,您需要一个实际的解析器还不清楚?正则表达式压力不是这个工作的合适工具。有些人在遇到问题时,会想“我知道,我会使用正则表达式。”现在他们有两个问题