我正处于困境,不明白为什么会有问题。它应与“ -_”的正则表达式匹配,并替换为“%/”。
package main
import (
"fmt"
"regexp"
)
func main() {
rewrittenUrl := "https://rewriteurls.com/v2/url?u=https-3A__www.youtube.com_watch-3Fv-3D4RkZAfD-2JHeM&d=DwMFaQ&c=SiTLKJfsN-8Sb-MxLIXcbA&r=LqnK821DYMk9rZdGgNQw73sPqZUvbX2xxnSU9Ro3lk8&m=Qq7De43ipEDY9RFTKIoH6VpjqxPwG1AHvfT51Oh-Sw4&s=2fNNjfWFIBBgYVuwxvVOAabxmcBqWXfzvQgU7zxduxg&e="
r, _ := regexp.Compile("u=(.+?)&[dc]=")
m := r.FindString(rewrittenUrl)
// Will print u=https-3A__www.youtube.com_watch-3Fv-3D4RkZAfD-2DHeM&d=
fmt.Print(m)
// This attempt did not work either...
// res := strings.Replace(m, "-_", "%/", 1)
fmt.Println(m)
// TO DO
// match in out '-_', '%/'
r2, _ := regexp.Compile("(-_)")
// Desired outcome u=https%3A//www.youtube.com/watch%3Fv%3D4RkZAfD%2DHeM&d=
fmt.Printf("%q\n", r2.ReplaceAllString(m, "%/"))
}
答案 0 :(得分:1)
第一部分显然可以按预期工作,因此您实际上要问的是如何转换字符串,如:
"u=https-3A__www.youtube.com_watch-3Fv-3D4RkZAfD-2JHeM&d="
放入类似
的字符串中"u=https%3A//www.youtube.com/watch%3Fv%3D4RkZAfD%2JHeM&d="
这很简单,不需要正则表达式...
m2 := strings.Replace(m, "-", "%", -1)
m2 = strings.Replace(m2, "_", "/", -1)
desired := "u=https%3A//www.youtube.com/watch%3Fv%3D4RkZAfD%2JHeM&d="
if m2 == desired {
fmt.Printf(" success: %q\n", m2)
} else {
fmt.Println("fail!")
}