2017-06-08 9 views
0

Ich habe eine Zeichenfolge wie folgt formatiert:Regex: Wie Regex-Übereinstimmungen zu überlappen?

'0 = text defining value 1 = text2 2 = text3, text3 (text3) 3 = text4'

mit einer unbekannten Anzahl von Werten. Ich versuche, eine Regex zu erhalten, um die 0 und den "Text definierenden Wert" zusammen für jedes Zahlbeschreibungspaar zusammenzubringen. Gerade jetzt, ich habe

'([0-9]{1,2}) ?= ?(.*?) ?[0-9]{0,2} ?[=$]'

als meinen regex, aber das paßt nur zu jedem anderen Wert im Feld. Irgendwelche Vorschläge, wie man es an alle anpassen kann?

Dank

Antwort

0

Sie Look-Ahead verwenden kann die nächste Partition, um herauszufinden, wo ist:

import re 

pattern = re.compile(r"(\d+)\s+=\s+(.*?)(?=\s+\d+\s+|$)") 

your_text = "0 = text defining value 1 = text2 2 = text3, text3 (text3) 3 = text4" 

pairs = pattern.findall(your_text) 
# [('0', 'text defining value'), 
# ('1', 'text2'), 
# ('2', 'text3, text3 (text3)'), 
# ('3', 'text4')] 

Wenn das, was Sie suchen, ist Ihre Frage ein wenig trüben.

+0

Danke! Entschuldigung wegen der Dunkelheit, ich bin wirklich neu in Regex und habe nicht wirklich die richtige Nomenklatur für alles gelernt. Das wird für das funktionieren, was ich brauche, danke! –