作者ericabab (ㄍㄠˊ)
看板Perl
標題Fw: [問題] perl的non-greedy緊接( )?
時間Thu May 19 23:16:26 2016
各位版大好,我想判斷有沒有連續的 /*,
來判斷是否有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