我试图将CamelCase转换为使用正则表达式的snake_case,我发现here。下面是我使用的代码片段:
in := "camelCase"
var re1 = regexp.MustCompile(`(.)([A-Z][a-z]+)`)
out := re1.ReplaceAllString(in, "$1_$2")
正则表达式匹配lCase
。 $1
这里是l
和$2
是Case
,所以使用替换字符串"$1_$2"
应导致camel_Case
。相反,它会导致cameCase
。
将替换字符串更改为"$1_"
结果为came
。如果我将其更改为"$1+$2"
,结果将如预期的那样为camel+Case
(see playground)。
现在,我的解决方法是使用"$1+$2"
作为替换字符串,然后使用strings.Replace
将加号更改为下划线。这是一个错误还是我在这里做错了什么?