正则表达式如何从key value字符串中把所有key和value取出来?
实例代码
有一个长的字符串str,现在要做的是把里面存在的key-value对,都给读出来,不是很清楚要如何做.
package main
import (
"fmt"
"regexp"
)
var str = `username="mengjiaheng",realm="Digest test",qop=auth,nonce="410640120104011==",uri="/index",nc=0000001,cnonce="1626405084726364600",response="d48ac2ea9b740ea1d0052ed528d73f87"`
func main() {
re := regexp.MustCompile(`([^=]+)=([^,]+)[,]*`)
str := re.FindAllStringSubmatch(str, -1)
fmt.Printf("%q\n", str)
}
下面是我上面代码的运行结果,我想把 " 给去掉,但是我不会操作了,希望大家给点建议
[["username=\"mengjiaheng\"," "username" "\"mengjiaheng\""] ["realm=\"Digest test\"," "realm" "\"Digest test\""] ["qop=auth," "qop" "auth"] ["nonce=\"410640120104011==\"," "nonce" "\"410640120104011==\""] ["uri=\"/index\"," "uri" "\"/index\""] ["nc=0000001," "nc" "0000001"] ["cnonce=\"1626405084726364600\"," "cnonce" "\"1626405084726364600\""] ["response=\"d48ac2ea9b740ea1d0052ed528d73f87\"" "response" "\"d48ac2ea9b740ea1d0052ed528d73f87\""]]
[["username=\"mengjiaheng\"," "username" "\"mengjiaheng\""] ["realm=\"Digest test\"," "realm" "\"Digest test\""] ["qop=auth," "qop" "auth"] ["nonce=\"410640120104011==\"," "nonce" "\"410640120104011==\""] ["uri=\"/index\"," "uri" "\"/index\""] ["nc=0000001," "nc" "0000001"] ["cnonce=\"1626405084726364600\"," "cnonce" "\"1626405084726364600\""] ["response=\"d48ac2ea9b740ea1d0052ed528d73f87\"" "response" "\"d48ac2ea9b740ea1d0052ed528d73f87\""]]
把你正则匹配那句话换成:
re := regexp.MustCompile(`([^=]+)=["]*([^,"]+)["]*[,]*`)
,我得出的效果是这样的,不知道是你要的那种结果嘛?我用的是Println
输出的,和你用Printf
输出结果。