正则表达式 – 如何在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中获得这种功能?我应该如何重写这些表达式?
添加一些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`)) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |