2016-12-09 3 views
2

Ich habe eine Adresse Zeichenfolge vom Typ bekommtpython regex - passend Schwanz Teilzeichenfolge Spiel

'Suite 100 <building name>, <street number, name + rest of address>' 

und ich versuche, die Suite Teil und den Rest der Adresszeile nach der Suite Teil zu extrahieren, verwenden Regex, aber es funktioniert nicht wie erwartet. Hier ist, was ich verwende:

>> res = re.match(r'Suite \d+ (\S+)?', 'Suite 250 Victory Plaza, 100 Sunshine Street, Paradise City 99999') 
>> res.groups() 
>> ('Victory',) 

ich das Ergebnis wollen zwei Gruppen haben, die erste enthält ‚Suite 250‘ und die zweite den Rest der Zeichenfolge zu haben. Wie kann ich das machen?

Antwort

3

Versuchen Sie Folgendes:

r"(Suite \d+)\s*(.+)" 

Die Teile in Klammern sind die Gruppen erfasst werden. '.' passt auf ein beliebiges Zeichen (außer neue Zeilen, außer Sie verwenden das DOTALL-Flag.)

Zwei Dinge stimmen nicht mit Ihrem Muster. 1) Sie erfassen den "Suite \ d +" Teil nicht, da er nicht von Klammern umgeben ist. 2) "\ S" entspricht einem beliebigen Zeichen außer Leerraum, deshalb erfassen Sie nur das erste Wort.