我有以下URI:
/controller/method/arg1/arg2
/controller/method/arg1/arg2/
〈-尾部斜杠/controller/method/arg1/arg2?param=1¶m=2
〈-尾随查询字符串
我需要一个正则表达式来提取/controller/method/arg1/arg2
,同时记住它可以以/
,?
或?
+一些字符结束。
这一点:
^\/.*\??
对我不起作用,因为它在?
之前使用字符。
理想情况下,我不需要尾随的/
或?
,但如果模式留下了它们,我将在替换正则表达式后修剪它们。
2条答案
按热度按时间tv6aics11#
我相信人们可以想到更多更花哨的正则表达式,但就我所知,最简单的匹配正则表达式是;
它在
?
关闭后剪切所有内容,其他匹配-正如您所说-很容易通过修剪处理。要测试的ReFiddle
prdp8dxp2#
假设路径中没有空的目录名,可以使用重复的子模式来匹配一个可选的斜杠,后跟一个或多个非问号、非斜杠字符。在使用了这些允许的字符之后,使用
\K
来忘记完整的字符串匹配,然后匹配任何剩余的字符并将它们替换为空字符串。代码:(Demo)
输出: