我一直在尝试设计一个Google AppEngine Python处理程序正则表达式,并且在使其工作方面没有太成功。
我正在尝试处理类似于OpenStreetMap's的API调用。
我目前的正则表达式如下:
/api/0.6/(.*?)/(.*?)\/?(.*?)
但是当它出现时:
/api/0.6/changeset/723/close
我错误地将723/close
和changeset
分组,当我希望将其分为三个部分时:changeset
,723
和close
。
最后一个斜杠和组是可选的,因此是/?
。
答案 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