gpt4 book ai didi

regex - gorilla Mux 正则表达式

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

我正在使用来自 Golang Gorilla Toolkit 的 Mux 包对于我的路线。

考虑以下路线:

m.HandleFunc("/admin/install", installHandler).Methods("GET")
m.HandleFunc("/admin/^((?!install).)*$", adminHandler).Methods("GET")
m.HandleFunc("/admin", adminHandler).Methods("GET")

问题出在中间路由的正则表达式上——它没有被解释,所以路由不会工作!

m.HandleFunc("/admin/{^((?!install).)*$}", adminHandler).Methods("GET")

使用 {} 大括号也不起作用。它只是被忽略,并被视为/admin/

也没有:

m.HandleFunc("/admin/{_dummy:^((?!install).)*$}", adminHandler).Methods("GET")

简而言之,我在这里试图实现的是首先匹配/admin/install 路由,然后我想使用正则表达式从下面的路由中排除那个确切的路由,但它不起作用。

有什么方法可以在 gorilla mux 包中使用正则表达式吗?

最佳答案

实际上可以这样做:

m.HandleFunc(`/{_dummy:admin\/([^install]*).*}`, adminHandler).Methods("GET")

编辑:

作为我对 VonC 上面评论的回答,这里有一个示例 go 应用程序:https://play.golang.org/p/nYWNADK7Sr

在您的本地电脑上运行它。尝试以下路线:

http://localhost:8080/admin/ - (returns "adminHandler")
http://localhost:8080/admin/something - (returns "adminHandler")
http://localhost:8080/admin/install - (returns "installHandler")

是的,VonC 确实解决了特定问题:

"to first match the /admin/install route, and that exact route I then want to exclude from the route below"

但是它并不意味着 “后面没有安装这个词” 是正确的 - 这只是在 re2 语法范围内可能的替代方法。简单地“忽略”或排除单词 install,如果它恰好出现在 url 中。

关于regex - gorilla Mux 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28950606/

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