2020-10-28 golang将正则结果转换为json返回

Rockage · · 152 次点击 · · 开始浏览    

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之类处理了。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:Rockage

查看原文:2020-10-28 golang将正则结果转换为json返回

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:1006366459

152 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传