看板 Perl 關於我們 聯絡資訊
各位版大好,我想判斷有沒有連續的 /*, 來判斷是否有nested的多行註解 ex1: $str='/* blah /* ' 表示有nested ex2: $str='/* blah */ blah /* ' 表示沒有nested 假設用ex2的$str 我用 /\/\*.*?(\*\/)?.*?\/\*/ 第1個跟第3個?是non-greedy,第2個?是存在與否 然後判斷$1是否存在,不知為何會抓不到$1? 如果第二個?不寫就抓得到,可是這樣無法達成我的需求 或是有更好的解法可以相授,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 119.14.238.187 ※ 文章網址: https://www.ptt.cc/bbs/RegExp/M.1463664369.A.00A.html ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 轉錄者: ericabab (119.14.238.187), 05/19/2016 23:16:26 ※ 編輯: ericabab (119.14.238.187), 05/19/2016 23:16:51
flu: 如果你把後面那堆non-greedy的用()圍起來——也就是$2—— 05/20 01:21
flu: 你會發現東西都在裡面 05/20 01:21
flu: 前兩群pattern —— 1個是 .*? 另一個是 (\*\/)? ——都match 05/20 01:31
flu: 0個時,讓第三群pattern全包剩下的字元的狀況下「竟然」ok了 05/20 01:33
flu: 結果就是看到的那樣 05/20 01:38
ericabab: 可是第二組pat沒有用non-greedy,為何搶不贏第三組呢? 05/20 08:13
CindyLinz: 第一組先搶短.. 0 個字, 此時第二組必須不取才能繼續 05/20 16:30