Seite 1 von 1

regex gesucht: suche ab zweiter leerzeichenfolge

Verfasst: Montag 12. Juli 2010, 15:15
von Francesco
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

Re: regex gesucht: suche ab zweiter leerzeichenfolge

Verfasst: Montag 12. Juli 2010, 15:29
von Dav1d
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'

Re: regex gesucht: suche ab zweiter leerzeichenfolge

Verfasst: Montag 12. Juli 2010, 15:49
von Francesco
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.

Re: regex gesucht: suche ab zweiter leerzeichenfolge

Verfasst: Montag 12. Juli 2010, 15:53
von 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.

Re: regex gesucht: suche ab zweiter leerzeichenfolge

Verfasst: Montag 12. Juli 2010, 16:07
von Francesco
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

Re: regex gesucht: suche ab zweiter leerzeichenfolge

Verfasst: Montag 12. Juli 2010, 16:53
von lunar
@Franceso: Wieso sollte es eine spezielle Option geben für das Suchen ab dem zweiten Auftreten von X?

Re: regex gesucht: suche ab zweiter leerzeichenfolge

Verfasst: Montag 12. Juli 2010, 19:35
von Francesco
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.