私はhereという正規表現を使用してCamelCaseをsnake_caseに変換しようとしています。ここで私が使用しているコードの抜粋です:
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
を使用してプラス記号をアンダースコアに変更することです。これはバグですか、私はここで何か間違っていますか?