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