帮助解决AppEngine处理程序正则表达式问题?

1 投票
1 回答
733 浏览
提问于 2025-04-15 15:34

我一直在尝试设计一个适用于Google AppEngine的Python处理程序的正则表达式,但到现在为止还没成功。

我想处理的API调用类似于OpenStreetMap的。

我现在的正则表达式是这样的:

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

但是当这个请求过来的时候:

/api/0.6/changeset/723/close

它错误地把723/closechangeset归为一组,而我其实想把它分成三部分:changeset723close

最后的斜杠和那部分是可选的,所以我用了/?

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

撰写回答