我試圖解析輸出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