Help with a AppEngine Handler Regex?
I've been trying to design a Google AppEngine Python handler regex and haven't开发者_Python百科 been too successful in getting it to work.
I'm trying to handle API calls similar to OpenStreetMap's.
My current regex looks like this:
/api/0.6/(.*?)/(.*?)\/?(.*?)
But when this comes in:
/api/0.6/changeset/723/close
It incorrectly groups 723/close
and changeset
, when I wanted it to group it into three things: changeset
, 723
, and close
.
The last slash and group is optional, thus the /?
.
Try this:
^/api/0.6/([^/]+)/([^/]+)/?([^/]*)$
My Python tests:
>>> 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
精彩评论