正则表达式 – 如何在Golang正则表达式中获取捕获组功能?

前端之家收集整理的这篇文章主要介绍了正则表达式 – 如何在Golang正则表达式中获取捕获组功能?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我将一个图书馆从 Ruby移植到Go,刚刚发现 Ruby中的正则表达式与Go(google RE2)不兼容.我注意到Ruby& Java(加上其他语言使用PCRE正则表达式(perl兼容,支持捕获组)),所以我需要重写我的表达式,以便它们在Go中编译好.

例如,我有以下正则表达式:

`(?<Year>\d{4})-(?<Month>\d{2})-(?<Day>\d{2})`

这应该接受如下输入:

2001-01-20

捕获组允许年,月和日被捕获到变量中.要获得每个组的价值,这很容易;您只需使用组名索引到返回的匹配数据,并返回值.所以,例如去年,这样的伪代码

m=expression.Match("2001-01-20")
year = m["Year"]

这是我在表达式中使用的一种模式,所以我有很多重写要做.

那么,有没有办法在Go regexp中获得这种功能?我应该如何重写这些表达式?

how should I re-write these expressions?

添加一些Ps,定义为here

(?P<Year>\d{4})-(?P<Month>\d{2})-(?P<Day>\d{2})

并使用as follows

package main

import (
    "fmt"
    "regexp"
)

func main() {
    r := regexp.MustCompile(`(?P<Year>\d{4})-(?P<Month>\d{2})-(?P<Day>\d{2})`)
    fmt.Printf("%#v\n",r.FindStringSubmatch(`2015-05-27`))
}

猜你在找的正则表达式相关文章