2009-07-10 10 views
-1

Je suis en train d'écrire une expression régulière de python qui correspondent à ces deux URL:expression régulière pour correspondre urls de site spécifique

http://www.waymarking.com/waymarks/WM6N3G_Battle_Mountain_State_Park 
http://www.waymarking.com/waymarks/WM6N3G 

et pour les deux capturera:

http://www.waymarking.com/waymarks/WM6N3G 

C'est ce que j'ai:

(http://www.waymarking.com/waymarks/.*?)_?.*? 

Mais elle correspond seulement:

http://www.waymarking.com/waymarks/ 

Merci!

Répondre

4
(http://www.waymarking.com/waymarks/[^_]*).* 
+0

Mieux que ma réponse. Le [^ _] est génial. –

+0

Damn était trop lent :(devrait probablement utiliser + étant donné qu'il devrait toujours y en avoir un ou plus – rezzif

+0

Notez qu'une classe de caractères niée correspondra également aux nouvelles lignes, bien sûr, cela dépend du format des chaînes source si cela peut être un problème. – Geert

0

manière non regex

url="http://www.waymarking.com/waymarks/WM6N3G_Battle_Mountain_State_Park" 
s = url.split("_") 
print s[0] 
0

*? fait quelque chose de complètement facultative et ne sera pas inclus si elle n'a pas

(http://www.waymarking.com/waymarks/[^_]+)(_.*)?)
0

Qu'en est-ce.

(http://www.waymarking.com/waymarks/[a-zA-Z0-9]*)_?.*? 
0

.*(http://www.waymarking.com/waymarks/WM6N3G).* si elle est en ligne

*? est non-gourmand, et ainsi renoncera à tout, sauf pour un personnage, dans ce cas.

1

Que diriez-vous

(http://www.waymarking.com/waymarks/[^_]+) 
Questions connexes