Re: [問題] boost regex 顯示問題

看板RegExp (正規表示式 Regular Expression)作者 (我是好人,也是個壞人)時間14年前 (2011/06/05 14:52), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《hhg4092 ()》之銘言: : 請問我想抓每一個[]裡的字元 : [a][b][c]..[n] : 但又是不定個數,有時一個都沒有 : 我目前的寫法 : re = (\[(\w+)\])* : 一個[str]的時候,是抓的到字串"str" : 但二個元素的時候[str][str1] : 都會抓成後面str1 : 請問re要怎麼改才是我想要的呢? : ------------------------------- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 123.240.226.69 : ※ 編輯: hhg4092 來自: 123.240.226.69 (05/31 14:22) : → blackkaku:\[(.+?)\] 05/31 19:06 : → hhg4092:好像不行歐,[aaa][bbb][ccc]會拆成aaa][bbb][ccc 06/01 09:46 : → hhg4092:我己經用別的方法取到我要的值了,感謝~ 06/01 09:47 這是一定的,因為你加上了 * 在 regex engine 的眼裡 就會變成是在比對 [\w+] 的連續字串,用個簡單的例子說明: 這大家都看得懂,連續 n 個 a: /a*/ 把 a 替換成 (\[(\w+)\]) 就變成連續 n 個 [\w+] 所以最裡面的括號當然抓到的也是最後一個,要怎麼解決 其實很簡單,連 * 都不需要,下面是 php 範例: <?php preg_match_all('/\[(\w+)\]/' , "[aa][bb][cc][dd]", $result, PREG_PATTERN_ORDER); if(count($result) > 0) { echo $result[1][0]; for($j = 1; $j < count($result[0]); ++$j) { echo ', ' . $result[1][$j]; } } ?> -- http://godspeedlee.myweb.hinet.net/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.124.101.219
文章代碼(AID): #1DwoUVmj (RegExp)
討論串 (同標題文章)
文章代碼(AID): #1DwoUVmj (RegExp)