Настройка конфигурации маршрутов веб-обработчика - PullRequest
0 голосов
/ 22 июля 2011

В конфигурации маршрутов веб-обработчика у меня есть следующее регулярное выражение:

('/post/(\w+)/.*', foo.app.WebHandlerFooClass)

это регулярное выражение соответствует URL-адресам такого типа:

  • /post/HUIHUIGgS823SHUIH/this-is-the-slug
  • /post/HUIHUIGgS823SHUIH/

передает правильный параметр HUIHUIGgS823SHUIH Id в веб-обработчик, соответствующий группе (\w+).

Как я могу изменить приведенное выше регулярное выражение, чтобы оно соответствовало также этому URL?

/post/HUIHUIGgS823SHUIH

Обработчик закодирован так, чтобы принимать только один параметр, base64 Id, поэтому в Regex должна быть только одна группа, соответствующая Id.

Итак, вот URL, которые должны быть сопоставлены:

  • /post/HUIHUIGgS823SHUIH/this-is-the-slug
  • /post/HUIHUIGgS823SHUIH/
  • /post/HUIHUIGgS823SHUIH <- Эй, я тоже хочу это </li>

Ответы [ 4 ]

3 голосов
/ 22 июля 2011
'/post/(\w+_-)(?:/([\w-]+))?/?'

Это соответствует следующему.

  • /post/HUIHUIGgS823SHUIH/this-is-the-slug
  • /post/HUIHUIGgS823SHUIH/this-is-the-slug/
  • /post/HUIHUIGgS823SHUIH/
  • /post/HUIHUIGgS823SHUIH

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

1 голос
/ 23 июля 2011

Я думаю, вы просто хотите:

'/post/([^/]+).*'

Но это кажется слишком простым ответом:)

1 голос
/ 23 июля 2011

Если вам не нужны данные в конце, то почему бы просто не использовать это?

'/post/(\w+).*'

В противном случае вам придется предоставить больше информации.

1 голос
/ 22 июля 2011

Если я правильно угадал ваше истинное намерение, то с этим все в порядке:

'/post/(\w+)'
...