Golang正则表达式替换行为
我在Go中有一个简单的正则表达式,在使用ReplaceAllString函数时注意到一个奇怪的行为Golang正则表达式替换行为,go,regexp-replace,Go,Regexp Replace,我在Go中有一个简单的正则表达式,在使用ReplaceAllString函数时注意到一个奇怪的行为 package main import ( "fmt" "regexp" ) func main() { var re = regexp.MustCompile("(.*)(b.*)") fmt.Println(re.ReplaceAllString("abc", "$1,
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
我在上测试了regex,发现问题出在我的tokenreplace语句上。但我并不完全理解根本问题
我是否错误地使用了$符号?如何调整替换字符串以获得预期/期望的输出?问题是1后面的d。您应该用花括号将组号括起来:
package main
import (
"fmt"
"regexp"
)
func main() {
var re = regexp.MustCompile("(.*)(b.*)")
fmt.Println(re.ReplaceAllString("abc", "${1},d"))
fmt.Println(re.ReplaceAllString("abc", "${1}d"))
fmt.Println(re.ReplaceAllString("abc", "${1}d.f"))
fmt.Println(re.ReplaceAllString("abc", "${1} d"))
}
否则,该组将扩展到1d,该组不是有效组,并返回空表达式