seth: Regexp: Suche bis zu einer bestimmten Zeichenfolge

Beitrag lesen

gudn tach!

Wenn du bis zu einem Wort suchen willst musst du
/^.*?Wort/
wenn du bis zum letzten vorkommen von einem Wort suchen willst musst du
/^.*Wort/ schreiben.

wenn "Wort" wirklich bloss so ein simpler string ist, sind haeufig gewoehnliche string-positions-funktionen die bessere wahl, also sowas wie

substring(0 bis position("wort" in string)-1 von string)

wenn "wort" komplizierter, also selbst wieder ein regexp ist, dann gibt es uebrigens auch neben den bereits genannten moeglichkeiten noch "zero-width look-ahead assertions", vor allem im falle von suchen-und-ersetzen sind die nuetzlich.

beispiel:

/^(.*?)[fF]oo/
speichert alles, was vor dem ersten "foo" oder "Foo" kommt in $1.

soll das alles ersetzt werden, ohne dass "foo" bzw. "Foo" angetastet werden, dann kommen die "zero-width look-ahead assertions" zum einsatz:

s/^(.*?)[fF]oo/$1/
wuerde naemlich "foo" bzw. "Foo" ueberschreiben.

s/^(.*?)(?=[fF]oo)/$1/
wuerde ebendies nicht tun.

prost
seth