我正在将一个库从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中获得这种功能;我应该如何重写这些表达式呢?