我正在尝试转换这个红宝石正则表达式。
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
,是否没有相应的内容?
答案 0 :(得分:1)
不支持lookbehinds,也不支持 @stribizhev 之类的反向引用。
正则表达式2(RE2)语法参考:
https://github.com/google/re2/wiki/Syntax
接受的正则表达式的语法是相同的 Perl,Python和其他语言使用的语法。更确切地说,它 是RE2接受的语法,并描述于 //code.google.com/p/re2/wiki/Syntax,\ C除外。 - GoLang Docs
(参考: https://golang.org/pkg/regexp/)