Еще одно регулярное выражение - как идентифицировать строку запроса

Я использую urlrewriting.net для моего urlrewriting. Мне нужна помощь в регулярном выражении (которого я до сих пор не понимаю....).

я хотел бы соответствовать

  • www.mysite.com/restaurant -> соответствует и возвращает "restaurant"
  • www.mysite.com/restaurant?page=1 -> соответствует и возвращает "restaurant"
  • www.mysite.com/restaurant?[SOME_RANDOM_QUERYSTRING] -> соответствует и возвращает "restaurant"
  • www.mysite.com/seattle/restaurant -> сопоставить и вернуть "seattle" и "restaurant"
  • www.mysite.com/seattle/restaurant?page=1 -> сопоставить и вернуть "seattle" и "restaurant"
  • www.mysite.com/seattle/restaurant?[SOME_RANDOM_QUERYSTRING] -> сопоставить и вернуть "seattle" и "restaurant"
  • www.mysite.com/seattle/restaurant-michelangelo -> не ловить
  • www.mysite.com/seattle/restaurant/sushi -> найти и вернуть "seattle" и "restaurant" и "sushi"
  • www.mysite.com/seattle/restaurant/sushi?page=1 -> найти и вернуть "seattle" и "restaurant" и "sushi"
  • www.mysite.com/seattle/restaurant/sushi?[SOME_RANDOM_QUERYSTRING] -> найти и вернуть "seattle" и "restaurant" и "sushi"
  • www.mysite.com/seattle/restaurant-michelangelo -> не ловить

Дело в том, что мне нужны части каталога URL-адреса, а не части строки запроса. Дело в том, что я вижу с помощью своего инструмента веб-аналитики, что люди ищут по двум словам. Они оба ищут город (сиэтл) + категорию (ресторан), например. «ресторан в Сиэтле», а также город (сиэтл) + название ресторана (ресторан-микеланджело), ​​например. "Ресторан Сиэтл-Микеланджело". Со структурной точки зрения это конечно бардак, так как это не иерархия. В идеальном мире иерархия была бы такой: город -> категория -> ресторан. но я все же хотел бы учесть это поведение поиска в своей структуре URL. В то же время у меня также есть страница со списком всех ресторанов страны.

Мне нужна помощь в том, как создавать регулярные выражения, а также наиболее эффективный способ их создания, поскольку я думаю, что они могут стать довольно дорогими.

Благодарность

Томас


person ThomasD    schedule 03.02.2012    source источник
comment
И как вы различаете категорию и имя? Во всех именах есть тире или как?   -  person user1096188    schedule 03.02.2012


Ответы (1)


использовать это:

/\/[A-Za-z0-9]{1,}(?:\/|$|\?)/

Совпадения/буквенно-цифровые символы 1-бесконечность, затем косая черта, конец строки или знак вопроса

person James L.    schedule 03.02.2012
comment
Хм... Я не могу заставить его работать. У меня не так много категорий, поэтому, возможно, мне следует просто сделать что-то вроде ^~/(.*)/restaurant, ^~/(.*)/café и т. д. Затем мне нужно удалить любую строку запроса (если она присутствует ). Итак, как будет выглядеть регулярное выражение, которое удалит строку запроса (если она присутствует) независимо от количества параметров в строке запроса? Спасибо - person ThomasD; 04.02.2012