帮助AppEngine Handler Regex?

时间:2009-10-31 22:06:00

标签: python regex google-app-engine

我一直在尝试设计一个Google AppEngine Python处理程序正则表达式,并且在使其工作方面没有太成功。

我正在尝试处理类似于OpenStreetMap's的API调用。

我目前的正则表达式如下:

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

但是当它出现时:

/api/0.6/changeset/723/close

我错误地将723/closechangeset分组,当我希望将其分为三个部分时:changeset723close

最后一个斜杠和组是可选的,因此是/?

1 个答案:

答案 0 :(得分:3)

试试这个:

^/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