微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正则表达式 – 如何在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`))
}

原文地址:https://www.jb51.cc/regex/356697.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐