[問題] 去除連續特定條件中的文字

作者: KawasumiMai (さあ、死ぬがいい)   2014-05-28 19:17:01
語言:javascript
str = "1111(22)1111(333)111(4444)111";
str.replace(/\(.*\)/,'');
結果他這樣只會抓取最前面的 ( 跟最後面的 ) 把中間的都去掉
變成1111111
但是在下想要把中間的22 333 4444去掉而已
變成11111111111111
請問哪裡想錯了?
作者: LPH66 (-6.2598534e+18f)   2014-05-28 19:32:00
. 是貪心的, 它會抓到最長的字串
作者: mars90226 (火星人)   2014-05-28 19:33:00
用non-greedy,/\(.*?\)/
作者: LPH66 (-6.2598534e+18f)   2014-05-28 19:33:00
呃, 我指的是 .*二樓的 non-greedy 是一解, 另解是改成 [^)]*個人比較偏好後者這個解法就是了
作者: s25g5d4 (function(){})()   2014-05-28 19:50:00
後者效能比較好
作者: lin1987www (林奕忠)   2014-05-28 20:21:00
\([^\)]*\) 這樣應該比較快吧?
作者: KawasumiMai (さあ、死ぬがいい)   2014-05-28 21:21:00
太感謝了,沒想到?就可以解決,而且還有更好的解法

Links booklink

Contact Us: admin [ a t ] ucptt.com