2010-03-10 7 views
0

Je veux que trouver des balises vides, voici un exempleComment regex une chaîne vide en python?

txt ="<lol1><><lol2>" 
rgx = "<([a-zA-Z_0-9]+)>" 
print re.findall(rgex, txt) 

Je reçois ce

['lol1', 'lol2'] 

Je veux

['lol1', '', 'lol2'] 

Comment puis-je faire avec regex?

Répondre

7

Utilisez rgx = "<([a-zA-Z_0-9]*)>"

Le point clé utilise *, qui signifie « zéro ou plus de ce qui précède », où vous utilisez +, ce qui signifie « un ou plusieurs ».

+0

merci, j'appris quelque chose de nouveau – Alquimista

+0

@Alquimista, vous êtes les bienvenus! –

0

pas besoin regex

>>> s="txt ="<lol1><><lol2>" 
>>> for i in txt.split(">"): 
...  if "<" in i: 
...  print i[i.find("<")+1:] 
... 
lol1 

lol2 
>>> [i[i.find("<")+1:] for i in txt.split(">") if "<" in i ] 
['lol1', '', 'lol2'] 
+0

'i [i.find (" <") + 1:]' peut être remplacé par 'i.lstrip ('<')' ou 'i [1:]'. 'if" <"in i' peut être éliminé ou remplacé par' if.startswith ("<") ', ce qui est plus efficace et précis. –

+0

Je sais, mais c'est un code plus compliqué que celui ici, merci. – Alquimista