【发布时间】:2015-10-12 23:44:00
【问题描述】:
我正在尝试将此 ruby 正则表达式转换为 go。
GROUP_CALL = /^(?<i1>[ \t]*)group\(?[ \t]*(?<grps>#{SYMBOLS})[ \t]*\)?[ \t]+do[ \t]*?\n(?<blk>.*?)\n^\k<i1>end[ \t]*$/m
我把它转换成
groupCall := regexp.MustCompile("^(?P<i1>[ \\t]*)group\\(?[ \\t]*(?P<grps>(?::\\w+|:\"[^\"#]+\"|:'[^']+')([ \\t]*,[ \\t]*(?::\\w+|:\"[^\"#]+\"|:'[^']+'))*)[ \\t]*\\)?[ \\t]+do[ \\t]*?\\n(?P<blk>.*?)\\n^\\k<i1>end[ \\t]*$/s")
但运行时出现此错误
error parsing regexp: invalid escape sequence: \k
go docs 中没有提到\k,go 中没有对应的吗?
【问题讨论】:
-
请查看this answer。简而言之:在 Go 正则表达式中不能使用反向引用。