如何使用正则表达式正确提取token值 解决匹配结果残留多余符号问题
问题原因
你当前使用的正则{"token":["}]仅能匹配前缀{"token":",字符组["}]只会匹配单个字符,因此替换后仅删除了前缀内容,剩余token-value"}与你的运行结果一致。
解决方案
方案1:基于替换逻辑调整
直接匹配整段JSON结构,通过捕获分组提取token值,正则规则调整为^{"token":"(.*)"}$,替换时引用第一个捕获分组即可:
re, err := regexp.Compile(`^{"token":"(.*)"}$`) if err != nil { log.Fatal(err) } val = re.ReplaceAllString(val, "$1") return val
方案2:直接匹配提取(更推荐)
如果待处理内容可能存在其他字段,用子匹配提取的方式容错性更高:
re, err := regexp.Compile(`"token":"([^"]+)"`) if err != nil { log.Fatal(err) } match := re.FindStringSubmatch(val) if len(match) >= 2 { val = match[1] } return val
该正则中([^"]+)会捕获所有非双引号的字符,自动在token值后的双引号位置停止匹配,无需处理结尾的大括号。
补充说明
如果待处理内容是标准JSON格式,更建议使用Go标准库encoding/json解析取值,避免因为格式变动(如字段顺序变化、存在多余空格)导致正则失效。
内容的提问来源于stack exchange,提问作者user16877655
相关产品推荐
相关产品推荐

