gpt4 book ai didi

regex - 通过正则表达式从 url 路径中删除特定路径

转载 作者:IT王子 更新时间:2023-10-29 02:10:17 32 4
gpt4 key购买 nike

Golang 有很多种删除特定字符串的方法。但是这个时候我需要使用正则表达式。

func Replace(path, from, to string) string {
reg, _ := re.Compile(from)
if reg.MatchString(path) {
return reg.ReplaceAllString(path, to)
}
return "error"
}

//This pattern is OK
fmt.Println(Replace("/nl/amsterdam/area2/area1", `\/+(?:area1|area2).+(/|\z)`, "$1"))
// Output: /nl/amsterdam

//What is wrong??
fmt.Println(Replace("/nl/amsterdam/area2", `\/+(?:area1|area2).+(/|\z)`, "$1"))
// Output: error
// I expect => /nl/amsterdam

fmt.Println(Replace("/nl/amsterdam/area2", `\/+(?:area1|area2)(/|\z)`, "$1"))
// Output: /nl/amsterdam
// This pattern seems OK, but when path is `/nl/amsterdam/area2/area1`, it doesn't work as I expected like the next pattern.

fmt.Println(Replace("/nl/amsterdam/area2/area1", `\/+(?:area1|area2)(/|\z)`, "$1"))
// Output: /nl/amsterdam/area1
// I wanna get /nl/amsterdam

路径中包含多少个目标是可变的。

最佳答案

您可以使用以下正则表达式:

(?:/(?:area1|area2))+(/|$)

参见 regex demo .

详情

  • (?:/(?:area1|area2))+ - 以下序列出现 1 次或多次:
    • / - / 字符(无需在 Go 正则表达式模式中转义)
    • (?:area1|area2) - 匹配 area1area2 的非捕获组(也可以替换为 area[12] 或只是 area\d+ 以匹配 area 和 1+ 位)
  • (/|$) - 第 1 组:/ 或字符串结尾(\z 将匹配字符串的结尾) .

关于regex - 通过正则表达式从 url 路径中删除特定路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48602480/

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