Seite 1 von 1

Kleines Regex Problem

Verfasst: Montag 6. Juli 2009, 18:38
von jonas
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

Verfasst: Montag 6. Juli 2009, 18:47
von HerrHagen
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.

Verfasst: Montag 6. Juli 2009, 19:22
von jonas
Funktioniert super, vielen Danke HerrHagen :wink:
Lg, Jonas

Verfasst: Montag 6. Juli 2009, 21:23
von sma
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