2016-11-11 1 views
0

Ich führe dies aus.RegEx - Oder Operator

print(re.findall(r'(<OR|<PP).*>', '<OR first><PP second><OR third>')) 

Erwartet:

['<OR first>', '<PP second>', '<OR third>'] 

Aktuell:

['<OR'] 

Hat jemand wissen Körper, wie ich das erwartet erreichen kann?

Antwort

2
import re 
print(re.findall(r'(?:<OR|<PP)[^>]*>', '<OR first><PP second><OR third>')) 

Beachten Sie, dass

  • findall nur Renditen Gruppen erfasst, wenn es welche gibt, sonst ist die vollständige Übereinstimmung
  • .* Matches gierig, so dass Ihr Muster die ganze Zeichenfolge entspricht
+0

Danke Sebastian Proske! –

+0

Anstelle von '[^>] *' können Sie auch '. *?' Verwenden, was nicht gierig ist und äquivalent zu '. *' Ist – qzb