[问题] 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