Golang的正则匹配中反引号``和转义字符是不能共存的:

package main

import (
    "fmt"
    "regexp"
)

func check(pattern string) {
    src := "abc123一二三①②③"
    fmt.Println(src)
    reg := regexp.MustCompile(pattern)
    fmt.Println(src)
    dst := reg.ReplaceAllString(src, "*")
    fmt.Println(dst)
}

func main() {
    pattern := `[a-zA-Z0-9\u2460-\u24FF]`
    check(pattern)
}

执行上面的代码会报错

panic: regexp: Compile(`[a-zA-Z0-9\u2460-\u24FF]`): error parsing regexp: invalid escape sequence: `\u`

这时我们只需要将反引号修改为双引号便可以解决此问题

package main

import (
    "fmt"
    "regexp"
)

func check(pattern string) {
    src := "abc123一二三①②③"

    reg := regexp.MustCompile(pattern)
    fmt.Println(src)
    dst := reg.ReplaceAllString(src, "*")
    fmt.Println(dst)
}

func main() {
    pattern := "[a-zA-Z0-9\u2460-\u24FF]"
    check(pattern)
}

执行结果

abc123一二三①②③
******一二三***

还有另外一种解决方案如下:

package main

import (
    "fmt"
    "regexp"
    "strconv"
)

func check(pattern string) {
    pattern, _ = strconv.Unquote(`"`   pattern   `"`)
    src := "abc123一二三①②③"

    reg := regexp.MustCompile(pattern)
    fmt.Println(src)
    dst := reg.ReplaceAllString(src, "*")
    fmt.Println(dst)
}

func main() {
    pattern := `[a-zA-Z0-9\u2460-\u24FF]`
    check(pattern)
}

执行结果

abc123一二三①②③
******一二三***

所以说我们使用golang的正则时,尽量全部用双引号。

到此这篇关于“Golang使用正则下反引号,双引号引发的问题”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
Golang使用正则下反引号,双引号引发的问题
jquery 单引号和双引号的区别分析
php单引号和双引号用法
jquery 单引号和双引号的区别及使用注意
PHP 双引号和单引号的用法分析
PHP引号前添加反斜杠、去除反斜杠的方法
oracle 单引号和双引号的区别分析
bash中too many arguments问题的解决方法
php表单中转换textarea换行符的方法
Python字符串详解