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吗?
1条答案
按热度按时间btqmn9zl1#
在您的替代品中:
这被解释为字面上名为
$1c
的捕获组,它在正则表达式中不存在。你想要${1}c
。