2017-07-17 65 views
0

我想從自定義有效載荷中提取JSON對象。Go正則表達式不匹配

我正則表達式是工作的罰款這裏:https://regex101.com/r/G5lBDC/1/

但圍棋沒有返回匹配

re := regexp.MustCompile(`/payload:\\"(.+?)\\\\\\"\\\\/g`) 
rawResponse := "version:1 response:<status:200 message:\"OK\" payload:\"{\\\"id\\\":\\\"ll2.card_4U45pAWUMCLhsu\\\",\\\"uid\\\":\\\"ll2.acc_727V8M6GjPJ9I26CqZHgxN\\\"}\\\"\\013\\022\\006ll2-cc\\032\\0019\" endorsement:<endorser:\"\\n\\007PASSKIT\\022\\224\\010>" 
rawJSON := re.FindStringSubmatch(rawResponse) 

去遊樂場https://play.golang.org/p/XRfbExNa9V

+0

是你試圖實現[this](https://play.gol ang.org/p/t6lvYq6Kb-)? –

+0

使用正則表達式而不是解析總是不好的主意。 –

+0

不完全。你的例子返回'{\「id \」:\「ll2.card_4U45pAWUMCLhsu \」,\「uid \」:\「ll2.acc_727V8M6GjPJ9I26CqZHgxN \」} \「\ 013 \ 022 \ 006ll2-cc \ 032 \ 0019',I只需要'{\「id \」:\「ll2.card_4U45pAWUMCLhsu \」,\「uid \」:\「ll2.acc_727V8M6GjPJ9I26CqZHgxN \」}' – PassKit

回答

1

你可以試試這個:(Run here

package main 

import (
    "regexp" 
    "fmt" 
) 

func main() { 
    var re = regexp.MustCompile(`payload:\\"(\{[^\}]+\})`) 
    var str = `version:1 response:<status:200 message:\"OK\" payload:\"{\\\"id\\\":\\\"ll2.card_4U45pAWUMCLhsu\\\",\\\"uid\\\":\\\"ll2.acc_727V8M6GjPJ9I26CqZHgxN\\\"}\\\"\\013\\022\\006ll2-cc\\032\\0019\" endorsement:<endorser:\"\\n\\007PASSKIT\\022\\224\\010>` 
    rawJSON := re.FindStringSubmatch(str) 
    fmt.Println(rawJSON[1])  
}