出于重定向目的,我尝试匹配网址中路径的最后部分。我想匹配任何以“/serve”结尾的网址,无论是否存在查询字符串。
我尝试了多种正则表达式模式,但以下一种似乎有效,但查询字符串的存在破坏了匹配:
我尝试过的模式:
\/([a-z0-9_-]*\/serve[\/]?)$
应匹配的测试字符串示例:
https://test.com/serve
https://test.com/serve/?param=1
https://test.com/serve/
http://test.com/serve
不应匹配的测试字符串示例:
https://test.com/serve/ways-to-serve
https://test.com/serve/ways-to-serve?param=1
提前致谢。
最佳答案
您可以使用
\/([^\/]+\/serve\/?)(?:$|\?)
请参阅regex demo .
详细信息:
\/
- 一个/
字符([^\/]+\/serve\/?)
- 捕获组 1:除/
字符之外的一个或多个字符,然后是/serve
,可选的/
字符(?:$|\?)
- 匹配字符串结尾或?
字符的非捕获组。
请参阅regex graph :
关于正则表达式匹配 url 的特定最后一个路径部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67878002/