从Go中的字符串中提取匹配模式

时间:2019-08-15 22:27:21

标签: go

如何根据模式从字符串中提取值?

这是我的模式:Member-[A-Za-z]+-Age%d+

示例:Member-John-Age50Member-Peter-Age120

我想提取nameage给定一个与模式匹配的字符串。

1 个答案:

答案 0 :(得分:3)

-[A-Za-z]+-表示名称,\d+表示年龄。例如:

import "regexp"
import "fmt"


func main() {
    r, _ := regexp.Compile(`Member-([A-Za-z]+)-Age(\d+)`) // Pay attention, no ", instead `
    name, _ := regexp.Compile(`-[A-Za-z]+-`)
    age, _ := regexp.Compile(`\d+`)

    matched_strings := r.FindAllString("oMember-John-Age50, jvienvujfeuvfejvwMember-Peter-Age120jvfjemvfjenvfeuvnuru", -1)

    for i := range matched_strings {
        name := name.FindString(matched_strings[i])
        name = name[1:len(name)-1]
        age := age.FindString(matched_strings[i])

        fmt.Println(name, age) // John 50, Peter 120
    }
}

现在这是我试图继续使用正则表达式的方法,当然您可以通过其他方式来使用它。名称和年龄应该存储在变量中,您可以根据需要使用它们。