我试图解析输出cflow,然后将用它来构建控制流的3D图。 cflow的的输出看起来是这样的:获取正确的正则表达式 - Java
main() <int main (int argc, char *argv[]) at sort.c:3>:
strcmp()
printf()
malloc()
getline() <char *getline (int max) at sort.c:62>:
isspace()
getchar()
ungetc()
malloc()
qsort()
free()
我使用正则表达式来提取函数名和括号 - 我想main()
,strcmp()
,等我的代码如下:
String line = input.nextLine(); // input is a Scanner reading from a file
Pattern p = Pattern.compile("[a-zA-Z0-9_]+\\(\\)"); // the important part
Matcher m = p.matcher(line);
现在,我正在使用的模式使用Emacs的正则表达式构建器模式。但是当我运行这个程序时,我没有得到任何匹配。我可能只是不了解Java的正则表达式函数。
另外,我意识到显而易见的解决方案是不使用Java ...我更喜欢这个,但是我要用Processing来绘制图形,所以我没有真正的选择。
我只是算前导空格,以确定树有多深,剥去前导空格函数名,参数括号后砍东西。 – 2012-04-25 18:04:58
我意识到我可以用普通的字符串处理来完成它,但是用正则表达式来处理它似乎更优雅。正如第十一医生可能会说的那样,正则表达式是_cool_。 – Peter 2012-04-25 18:10:00
你打算如何获得比赛?什么匹配方法? – 2012-04-25 18:10:10