Kleines Regex Problem

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
jonas
User
Beiträge: 156
Registriert: Dienstag 9. September 2008, 21:03

Hi ich habe folgende Datei:

<%name%><%test%>
<%what%>
<%impress%>

Jetzt möchte ich mit meinem Pattern

Code: Alles auswählen

r'<%[\D\d]*%>'
.
Also nutze ich:

Code: Alles auswählen

re.findall(pattern,datei)
Doch dabei bekomme ich nur

Code: Alles auswählen

['<%name%><%test%>', '<%what%>', '<%impress%>']
Wie bekomme ich die beiden ersten auseinander?
Lg, Jonas
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

Du musst bei der Suche auf non-Greedy umstellen.

Code: Alles auswählen

r'<%[\D\d]*?%>'
Beachte das ? nach dem *. Damit wird die kürzeste (statt der längsten) passende Sequenz gefunden.
Benutzeravatar
jonas
User
Beiträge: 156
Registriert: Dienstag 9. September 2008, 21:03

Funktioniert super, vielen Danke HerrHagen :wink:
Lg, Jonas
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Es ist aber schon klar, dass [\D\d] einfach ein umständlicher . ist, oder? Ich meine, das ist die Vereinigung von Zahlen und keinen Zahlen, also alles.

Stefan
Antworten