在Golang Regexp ReplaceAllString中发现错误?

yacmzcpb  于 2023-05-27  发布在  Go
关注(0)|答案(1)|浏览(176)
package main

import (
    "fmt"
    "regexp"
)

const sample = `darted`

func main() {
    var re = regexp.MustCompile(`^(.*?)d(.*)$`)
    s := re.ReplaceAllString(sample, `$1c$2`)
    fmt.Println(s)//prints 'arted' expected: carted
}

去Playground:https://go.dev/play/p/-f0Cd_81eMX
尝试使用非字母字符(即'$1.$2'结果为'. arted')
添加一个以上的字母字符工作(即'$1cl$2'导致'clarted')

为什么上面的示例不起作用?

有人能告诉我我做错了什么,或者确认这是Go中需要报告的bug吗?

btqmn9zl

btqmn9zl1#

在您的替代品中:

`$1c$2`

这被解释为字面上名为$1c的捕获组,它在正则表达式中不存在。你想要${1}c

相关问题