帮助解决AppEngine处理程序正则表达式问题?
我一直在尝试设计一个适用于Google AppEngine的Python处理程序的正则表达式,但到现在为止还没成功。
我想处理的API调用类似于OpenStreetMap的。
我现在的正则表达式是这样的:
/api/0.6/(.*?)/(.*?)\/?(.*?)
但是当这个请求过来的时候:
/api/0.6/changeset/723/close
它错误地把723/close
和changeset
归为一组,而我其实想把它分成三部分:changeset
、723
和close
。
最后的斜杠和那部分是可选的,所以我用了/?
。
1 个回答
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