[問題] regular expression針對語法格式的定義

作者: a2975313 (GN)   2017-03-22 15:20:09
因為需要解析javascript程式碼"函式定義"的內容, 所以直接想到用正規式擷取.
想問一下如何用正規式定義函式的pattern, 目前卡在大括號{}上面.
因為function裡面有if for while也會有自己的大括號.
如果pattern是定成"function...\{[\s\S]*\}"會變成抓出1~13行的內容..
但我只需要1~8與12~13行的內容就好, 請問這是否有解, 謝謝.
1.. function methodA()
2.. {
3.. var a='';
4.. if(0==0){...}
5.. for(i=0;i<=10;i++){...}
6.. while(0==0){...}
7.. methodB();
8.. }
9..
10. methodA();
11.
12. function methodB()
13. {...}
作者: IKAFIRE (沒有)   2017-03-22 18:17:00
抓成對括號可以用個counter,看到前括號++,後掛號--counter大於0時就是括號中的內容
作者: MickPlaYer (Mick)   2017-03-22 23:44:00
可以用Parser做 像是lex yacc之類的

Links booklink

Contact Us: admin [ a t ] ucptt.com