regex gesucht: suche ab zweiter leerzeichenfolge

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
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

Hallo

stehe etwas auf der Leitung:

gegeben (zb. 2 separate suchstrings):

Code: Alles auswählen

Wert11 Wert12            Wert13   Wert14
bzw.

Code: Alles auswählen

Wert21               Wert22  Wert23              Wert24
Ich möchte den String (jeweils) ab dem Ende der zweiten Leerzeichenfolge bis zum Ende der Zeile bekommen.

D.h.

Code: Alles auswählen

Wert13   Wert14
bzw.

Code: Alles auswählen

Wert23              Wert24
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Wieso regex?

Code: Alles auswählen

>>> foo = 'Wert11 Wert12            Wert13   Wert14'
>>> bar = 'Wert21               Wert22  Wert23              Wert24'
>>> foo.split(None,2)[-1]
'Wert13   Wert14'
>>> bar.split(None,2)[-1]
'Wert23              Wert24'
the more they change the more they stay the same
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

Dav1d hat geschrieben:Wieso regex?
[...]
Ja danke. Ich möchte diese Zeichenfolge mit dem findstring in meinem Editor finden, deswegen. Mit groups ginge es auch, kann ich aber in meinem Suchstring im Find Dialog nicht brauchen:

Code: Alles auswählen

e=re.search(" +\w+ +(\w+ +\w+)", bar)
Aber ich denke, da müsste ich irgendwie ein lookbehind drinhaben.
lunar

@Francesco: Lookbehinds nicht-konstanter Länge sind in mit "re" nicht möglich, reguläre Ausdrücke können nicht unbegrenzt zurück schauen.
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

lunar hat geschrieben:@Francesco: Lookbehinds nicht-konstanter Länge sind in mit "re" nicht möglich, reguläre Ausdrücke können nicht unbegrenzt zurück schauen.
Ah ja, das habe ich gerade beim probieren feststellen müssen. ;)

Code: Alles auswählen

\w+ +\w+$
ginge dann, wenn man sich verlassen kann, dass immer 4 wörter in einer Zeile sind, die dann gleich die Zeile abschließen.

Code: Alles auswählen

re.search("(?:\w+ +){2}(.*)", bar)
würde das finden, aber dann geht das nicht über den find dialog.

Irgendwo, bilde ich mir ein zumindest, müsste es ja so einen qualifier oder so geben. Das heißt, suche ab dem zweiten auftreten von ' +\w' an weg.

So sinnvoll ist das ganze eh nicht, ich möchte eigentlich nur wissen, ob man so etwas generell finden (direkt in regex string) kann, ohne einen eigenen code dazu zu schreiben
lunar

@Franceso: Wieso sollte es eine spezielle Option geben für das Suchen ab dem zweiten Auftreten von X?
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

lunar hat geschrieben:@Franceso: Wieso sollte es eine spezielle Option geben für das Suchen ab dem zweiten Auftreten von X?
Ich habe mir das wahrscheinlich nur eingebildet ;) vermutlich wäre awk für diese Art von Aufgaben ohnehin besser geeignet.
Antworten