使用正则表达式删除整个查询字符串

时间:2012-02-04 09:42:21

标签: regex url-rewriting

我有以下正则表达式,但如果它存在,如何完全删除查询字符串:

^~/(.*)/restaurant/(.*)

例如。网址

/seattle/restaurant/sushi?page=2 

/seattle/restaurant/sushi?somethingelse=something 

/seatthe/restaurant/sushi 

应该返回seattlerestaurant以及sushi并删除任何查询字符串(如果存在)。

(抱歉转发了类似的问题,但我无法在上一个问题中得到答案)。

感谢

托马斯

2 个答案:

答案 0 :(得分:5)

这个正则表达式:

(/[^?]+).*

应匹配您网址的初始部分并将其放入群组中。

因此它将匹配/seattle/restaurant/sushi并将值放在一个组中。

如果您只想处理单词(/.*?/restaurant[^?]+).*作为斜杠之间的第二个单词的网址,则可以使用以下内容:restaurant

编辑:这样的事情应该产生3组:/(.*?)/(restaurant)/([^?]+).*。第1组为seatthe,第2组为restaurant,第3组为sushi。如果在最后/之后有?,则正则表达式会丢弃?及其后的所有内容。

答案 1 :(得分:1)

您应该更改最终的/./以匹配“除此之外的任何问题”

^~/(.*)/restaurant/([^?]*)