2009-10-31 4 views
1

J'ai essayé de concevoir une regex pour les gestionnaires Google AppEngine Python et je n'ai pas réussi à la faire fonctionner.Aide pour un gestionnaire AppEngine Regex?

J'essaie de gérer les appels API similaires à OpenStreetMap's.

Mon regex actuelle ressemble à ceci:

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

Mais quand cela vient:

/api/0.6/changeset/723/close

Il regroupe de manière incorrecte 723/close et changeset, quand je le voulais groupe en trois choses: changeset , 723 et close.

La dernière barre oblique et le dernier groupe sont facultatifs, ainsi le /?.

Répondre

3

Essayez ceci:

^/api/0.6/([^/]+)/([^/]+)/?([^/]*)$ 

Mes tests 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 
+0

Merci, le ^/beaucoup aidé. – magneticMonster

+0

De rien. :) –