2020-10-28 golang将正则结果转换为json返回
2020-10-28 本文已影响0人
Rockage
1. 首先test.txt文件长这样:
-
name: server1-us
type: ss
-
name: server2-jp
type: ssr
-
name: server3-hk
type: v2ray
-
2. 现在我们需要将这个文件进行正则处理,并转换成json格式
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"regexp"
)
func main() {
var str string
b, err := ioutil.ReadFile("test.txt")
if err != nil {
} else {
str = string(b)
}
//首先将文件分成三个大段
var re = regexp.MustCompile(`\s{1,}name[\s\S]*?\s{1,}type.+`)
matchs := re.FindAllString(str, -1)
var ssList []map[string]string /*创建map数组 */
for _, matchs := range matchs {
r := regexp.MustCompile(`name:\s{0,}'{0,1}(.+?)\*{0,1}'{0,1}\s{1,}type:\s{0,}`)
m := r.FindStringSubmatch(matchs)
ss := make(map[string]string) //ss是ssList中的一个元素
ss["name"] = m[1]
ss["type"] = m[2]
ssList = append(ssList, ss) //将ss插入ssList
}
mjson, _ := json.Marshal(ssList)
mString := string(mjson)
fmt.Println(mString)
}
程序输出:
[{"name":"server1-us","type":"ss"}, {"name":"server2-jp","type":"ssr"},{"name":"server3-hk","type":"v2ray"}]
这样,就很容易将结果回传给javascript之类处理了。