我在 Go 中有一个简单的正则表达式,在使用 ReplaceAllString 函数时发现了一个奇怪的行为。

package main

import (
    "fmt"
    "regexp"
)

func main() {
    var re = regexp.MustCompile("(.*)(b.*)")
    fmt.Println(re.ReplaceAllString("abc", "$1,d"))
    fmt.Println(re.ReplaceAllString("abc", "$1d"))
    fmt.Println(re.ReplaceAllString("abc", "$1d.f"))
    fmt.Println(re.ReplaceAllString("abc", "$1 d"))
}

我期待这样的事情

a,d
ad
ad.f
a d

但实际结果是

a,d

.f
a d

我还在https://regex101.com/r/sROI28/1 测试了正则表达式,发现我的令牌替换语句是问题所在。但我并不完全理解根本问题。

我是否错误地使用了 $ 符号?我将如何调整我的替换字符串以达到预期/期望的输出?