Удалить всю строку запроса с помощью регулярных выражений - PullRequest
1 голос
/ 04 февраля 2012

У меня есть приведенное ниже регулярное выражение, но как я могу полностью удалить строку запроса, если она присутствует:

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

например.URL

/seattle/restaurant/sushi?page=2 

или

/seattle/restaurant/sushi?somethingelse=something 

или

/seatthe/restaurant/sushi 

должен просто вернуть seattle и restaurant и sushi и удалить любую строку запроса, еслионо присутствует.

(извините за перепост аналогичного вопроса, но я не смог получить ответ на свой предыдущий вопрос).

спасибо

Томас

Ответы [ 2 ]

5 голосов
/ 04 февраля 2012

Это регулярное выражение:

(/[^?]+).*

Должно соответствовать начальному разделу вашего URL и помещаться в группу.

Таким образом, оно будет соответствовать /seattle/restaurant/sushi и помещать значение в группу.

Вы можете использовать что-то вроде этого: (/.*?/restaurant[^?]+).*, если вы хотите обрабатывать только URL со словом restaurantкак второе слово между слешами.

Редактировать: Что-то вроде этого должно привести к 3 группам: /(.*?)/(restaurant)/([^?]+).*.Группа 1 - seatthe, группа 2 - restaurant и группа 3 * sushi.Если после последнего / есть ?, регулярное выражение отбрасывает ? и все, что следует за ним.

1 голос
/ 04 февраля 2012

Вы должны изменить свой окончательный /./, чтобы он соответствовал «что угодно, кроме знака вопроса», как это

^~/(.*)/restaurant/([^?]*)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...