我有以下正则表达式,但如果它存在,如何完全删除查询字符串:
^~/(.*)/restaurant/(.*)
例如。网址
/seattle/restaurant/sushi?page=2
或
/seattle/restaurant/sushi?somethingelse=something
或
/seatthe/restaurant/sushi
应该返回seattle
和restaurant
以及sushi
并删除任何查询字符串(如果存在)。
(抱歉转发了类似的问题,但我无法在上一个问题中得到答案)。
感谢
托马斯
答案 0 :(得分:5)
这个正则表达式:
(/[^?]+).*
应匹配您网址的初始部分并将其放入群组中。
因此它将匹配/seattle/restaurant/sushi
并将值放在一个组中。
如果您只想处理单词(/.*?/restaurant[^?]+).*
作为斜杠之间的第二个单词的网址,则可以使用以下内容:restaurant
。
编辑:这样的事情应该产生3组:/(.*?)/(restaurant)/([^?]+).*
。第1组为seatthe
,第2组为restaurant
,第3组为sushi
。如果在最后/
之后有?
,则正则表达式会丢弃?
及其后的所有内容。
答案 1 :(得分:1)
您应该更改最终的/./
以匹配“除此之外的任何问题”
^~/(.*)/restaurant/([^?]*)