Помогите с обработчиком AppEngine Regex? - PullRequest
1 голос
/ 01 ноября 2009

Я пытался создать регулярное выражение обработчика Python для Google AppEngine и не слишком успешно его запустил.

Я пытаюсь обрабатывать вызовы API, аналогичные OpenStreetMap's .

Мое текущее регулярное выражение выглядит так:

/api/0.6/(.*?)/(.*?)\/?(.*?)

Но когда это приходит:

/api/0.6/changeset/723/close

Он неправильно группирует 723/close и changeset, когда я хотел, чтобы он сгруппировал его в три вещи: changeset, 723 и close.

Последний слеш и группа необязательны, поэтому /?.

1 Ответ

3 голосов
/ 01 ноября 2009

Попробуйте это:

^/api/0.6/([^/]+)/([^/]+)/?([^/]*)$

Мои тесты на Python:

>>> regex = re.compile(r"^/api/0.6/([^/]+)/([^/]+)/?([^/]*)$")
>>> regex.match("/api/0.6/changeset") is None
True
>>> regex.match("/api/0.6/changeset/723").groups()
('changeset', '723', '')
>>> regex.match("/api/0.6/changeset/723/close").groups()
('changeset', '723', 'close')
>>> regex.match("/api/0.6/changeset/723/close/extragroup") is None
True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...