golang 使用 regex group 的值

与常用的语言正则不同, golang 使用 $1 表示 regex group。 而类似 sed, python 中常用的是 \1

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

package main

import (
	"fmt"
	"regexp"
)

func main() {
	re := regexp.MustCompile(`([A-Z])`)
	s := re.ReplaceAllString("UserCreate", ".$1")
	fmt.Println(s) // .User.Create

}

func Test_Regexp(t *testing.T) {
	chars := `('|")`
	str := `"123'abc'456"`
	re := regexp.MustCompile(chars)
	
	s := re.ReplaceAllString(str, `\$1`) // 这里可以使用 ` 反引号
	fmt.Println(s) // \"123\'abc\'456\"

}


// https://stackoverflow.com/questions/43586091/how-golang-replace-string-by-regex-group
  • python
1
2
3
import re
name = re.sub(r'([A-Z])', r'.\1', "UserCreate")
print(name) # .User.Create