[問題] 怎抓到全部的()

看板RegExp (正規表示式 Regular Expression)作者 (cralvin)時間2年前 (2021/10/09 20:15), 2年前編輯推噓4(4010)
留言14則, 4人參與, 最新討論串1/1
[macdoll(マコ(・c_・))]shutter chance!!(ラブライブ) [しろむじ(ん坊主)]まる限定。((G)えでぃしょん) [PASTEL WING(如月あいす)]アイスフレンド(嫁)03(ガール(仮)) \(.*?\) \([^\n\)]*?\) 這兩個都不行,碰到俄羅斯套娃就挂了 像最後一個,抓到(ガー(仮))或(仮)都行 結果是半調子(ガール((仮) 若想抓出全部的()、如第三題的(如月あいす)(嫁)(ガール(仮)) 請問這要怎辦? thx -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.237.13.234 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/RegExp/M.1633781746.A.61C.html

10/09 20:18, 2年前 , 1F
多層括號一般 regexp 做不到, 要有另外支援遞迴的才行
10/09 20:18, 1F

10/09 20:21, 2年前 , 2F
但如果你只限定兩層或三層以內的話那或許有辦法
10/09 20:21, 2F
第三題 (如月あいす)(嫁)(ガール(仮)) 請問有辦法嗎?

10/10 03:18, 2年前 , 3F

10/10 03:19, 2年前 , 4F
※ 編輯: vernc (36.237.11.9 臺灣), 10/10/2021 18:24:53

10/11 00:17, 2年前 , 5F

10/11 00:17, 2年前 , 6F
可惜這樣變定制了、有n個pattern 兩層\([^()]*?\([^()]*?\)[^()]*?\) 三層、前後再掛上去\([^()]*?\([^()]*?\([^()]*?\)[^()]*?\)[^()]*?\) match all pattern? ※ 編輯: vernc (36.237.36.124 臺灣), 10/20/2021 04:28:03

10/20 06:09, 2年前 , 7F
不限括號層數,但只列最頂層結果:
10/20 06:09, 7F

10/20 06:10, 2年前 , 8F

10/20 06:10, 2年前 , 9F

10/30 08:47, 2年前 , 10F
嗯, (?R) 就是所謂的「另外支援遞迴」的語法
10/30 08:47, 10F

10/30 08:48, 2年前 , 11F
這個不是所有 regexp 引擎都支援的
10/30 08:48, 11F

10/30 08:49, 2年前 , 12F
但不限層數的問題只有在有這個支援的才寫得出來
10/30 08:49, 12F

02/18 20:10, , 13F
\(\W*?\){1,}
02/18 20:10, 13F

02/18 20:44, , 14F
我錯了 這題好難
02/18 20:44, 14F
文章代碼(AID): #1XOOVoOS (RegExp)
文章代碼(AID): #1XOOVoOS (RegExp)