加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-13 22:56:06 所属栏目:百科 来源:网络整理
导读:我将一个图书馆从 Ruby移植到Go,刚刚发现 Ruby中的正则表达式与Go(google RE2)不兼容.我注意到Ruby Java(加上其他语言使用PCRE正则表达式(perl兼容,支持捕获组)),所以我需要重写我的表达式,以便它们在Go中编译好. 例如,我有以下正则表达式: `(?Yeard{4})-(
我将一个图书馆从 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("%#vn",r.FindStringSubmatch(`2015-05-27`))
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读