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

看板C_Sharp (C#)作者 (GN)時間8年前 (2017/03/22 15:20), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串1/1
因為需要解析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. {...} -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.254.3.154 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1490167212.A.FFE.html

03/22 18:17, , 1F
抓成對括號可以用個counter,看到前括號++,後掛號--
03/22 18:17, 1F

03/22 18:18, , 2F
counter大於0時就是括號中的內容
03/22 18:18, 2F

03/22 23:44, , 3F
可以用Parser做 像是lex yacc之類的
03/22 23:44, 3F
文章代碼(AID): #1OqYMi_- (C_Sharp)
文章代碼(AID): #1OqYMi_- (C_Sharp)