作者gn00742754 (西門貓)
看板RegExp
標題[問題] 去除括號
時間Wed Nov 14 11:21:40 2012
我在JS使用正規表示式
原始字串:
{abd : [ {id:value},{name:value} , {id:value},{name:value} ]}
目標字串:
[ {id:value},{name:value} , {id:value},{name:value} ]
我用了
/((^[^[]*\:))|(}$)/
來取代
可是結果卻變成
[ {id:value},{name:value} , {id:value},{name:value} ] }
最後一個沒被去掉
但是我在正規表示式的測試網站卻是我想要的結果
不太明白為什麼JS下不成功><
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.117.68.117
1F:→ n6333373:可能是原始字串中的}後面還有東西? 11/14 13:07
3F:推 CindyLinz:你 regex 結尾的 / 後面要加一個 g 才會多次取代呀 11/14 18:01
4F:→ qwertmn:字串單純的話..直接 \[.*\] 就抓的出來了 11/14 22:15
5F:→ qwertmn:看你寫的pattern 要匹配到 }結尾的前一個字元- 0 11/14 22:16
6F:→ qwertmn:\[.*(?=\}) 醬試試看.. 11/14 22:17
7F:→ qwertmn:/((^[^[]*\:))|(}$)/ 我看起來也和你的目標字串沒關係阿 11/14 22:20
8F:→ gn00742754:抱歉,剛學regex,還不是很熟,謝謝大家的幫助~ 11/15 00:30
9F:→ kilva:在{ a : b }中要取出b,正規表示式可以寫成 11/18 11:36
10F:→ kilva:/^\s*{.*?\:\s*(.*?)\s*}\s*$/ 11/18 11:37
11F:→ kilva:"{a:b}".match(/^\s*{.*?\:\s*(.*?)\s*}\s*$/)[1] // b 11/18 11:37