首页 > 解决方案 > 在 Go 中使用正则表达式来识别常见模式

问题描述

我正在尝试解析这个字符串goats=1\r\nalligators=false\r\ntext=works

contents := "goats=1\r\nalligators=false\r\ntext=works"


    compile, err := regexp.Compile("([^#\\s=]+)=([a-zA-Z0-9.]+)")
    if err != nil {
        return
    }

    matchString := compile.FindAllStringSubmatch(contents, -1)

我的输出看起来像[[goats=1 goats 1] [alligators=false alligators false] [text=works text works]] 我在表达中做错了什么导致 goats=1 也有效?我只想要 [[山羊 1]...]

标签: go

解决方案


对于另一种方法,您可以改用该strings包:

package main

import (
   "fmt"
   "strings"
)

func parse(s string) map[string]string {
   m := make(map[string]string)
   for _, kv := range strings.Split(s, "\r\n") {
      a := strings.Split(kv, "=")
      m[a[0]] = a[1]
   }
   return m
}

func main() {
   m := parse("goats=1\r\nalligators=false\r\ntext=works")
   fmt.Println(m) // map[alligators:false goats:1 text:works]
}

https://golang.org/pkg/strings


推荐阅读