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字符串详解