【发布时间】:2012-06-15 10:58:21
【问题描述】:
是否可以使用正则表达式解析一些 Java 代码?
假设我想要一个 int 变量列表:
int abc1 = 1;
int abc2 = abc1 + 1;
int abd3 = abc1 + abc2;
我想将这些放入ArrayList。
所以是这样的:
private void parse(String s){
List<List<String>> variables = new ArrayList<List<String>>();
list.add(new ArrayList<String>);//var type
list.add(new ArrayList<String>);//var name
list.add(new ArrayList<String>);//var data
Pattern p = Pattern.compile();//This is what I want
Matcher m = p.matcher(s);
while(m.find()){
String match = m.group();
Pattern p2 = Pattern.compile();//Here as well
Matcher m2 = p.matcher(s);
while(m2.find()){
for(int i = 0; i < m.groupCount()){
//add the variables to the lists
}
}
}
}
我要问的是什么正则表达式可以处理这个任务?
所有这一切的原因是用户可以使用一些代码对应用程序进行一些控制(顺便说一句,Android 应用程序)
如果不建议使用正则表达式,那么我应该使用什么解析器?
【问题讨论】:
-
就像评论一样,有很多java parsers 可用。我不会尝试使用正则表达式来做到这一点。
-
这背后的动机是什么??
-
不能用正则表达式解析递归文法。使用解析器。
-
@SmartLemon:不,这在理论上是不可能的。正则表达式无法处理递归语法。
-
嗯,我明白了,我猜它会是一个解析器