gpt4 book ai didi

regex - 为什么我的正则表达式不匹配并替换字符串以将 urlencode 转换为新字符串?

转载 作者:数据小太阳 更新时间:2023-10-29 03:10:20 26 4
gpt4 key购买 nike

我卡住了,不明白为什么会出问题。它应该匹配“-_”的正则表达式并替换为“%/”。

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, "%/"))
}

最佳答案

第一部分显然按预期工作,所以您实际上要问的是如何转换字符串,例如:

"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!")
}

它正在运行:https://play.golang.org/p/yWCJz7jTw2l

关于regex - 为什么我的正则表达式不匹配并替换字符串以将 urlencode 转换为新字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53106258/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com