golang regexp ReplaceAllStrings和backreference不能很好地工作
试着在单词的开头大写每个字母。我知道有字符串。标题,但这对我来说太不精确了 我不确定这为什么不起作用:golang regexp ReplaceAllStrings和backreference不能很好地工作,regex,go,Regex,Go,试着在单词的开头大写每个字母。我知道有字符串。标题,但这对我来说太不精确了 我不确定这为什么不起作用: package main import ( "fmt" "regexp" "strings" ) func main() { re := regexp.MustCompile(`\b([a-z])`) fmt.Println(re.ReplaceAllString("my test string", strings.ToUpper("$1")))
package main
import (
"fmt"
"regexp"
"strings"
)
func main() {
re := regexp.MustCompile(`\b([a-z])`)
fmt.Println(re.ReplaceAllString("my test string", strings.ToUpper("$1")))
}
您应该使用ReplaceAllStringFunc,例如:
re.ReplaceAllStringFunc("my test string", func(s string) string {
return strings.ToUpper(s)})
见工作
您的代码不起作用,因为:
re.ReplaceAllString("my test string", strings.ToUpper("$1"))
同:
re.ReplaceAllString("my test string", "$1")
由于$1的大写字母仍然是$1。go regexp包和RE2不支持反向引用。@DaveC是的,它将使John的书成为John的书,使用正则表达式,即使在像go这样有限的支持下,您也可以避免这种行为,在这种情况下,类似这样的东西将起作用[^']\b[a-z]。@Mikelemin-将其编辑为不精确,这似乎更接近你所描述的意思-希望你能理解你想说的