【发布时间】:2015-05-27 13:17:06
【问题描述】:
我正在将一个库从 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 正则表达式中获得这种功能?我应该如何重写这些表达式?
【问题讨论】:
标签: regex go capture-group