Jörk Behrends: Probleme bei exaktem Suchbegriff

Beitrag lesen

Hallo Ihr!

\b erkennt Wortgrenzen, in deinem Fall also den Anfang der Zeile und den Strich. Was du suchst, ist
wahrscheinlich \s.

Konkreter ist hier wohl \t gefragt, da ja zwischen den Tabs auch Einträge mit Leerzeichen vorkommen könnten. Natürlich weiß ich nicht, wie das in diesem Fall ausschaut ...

Wenn man jetzt aber nach \t$Search\t sucht, gibt es das Problem, daß die Einträge am Rand nicht gefunden werden. Diese müssten dann alternativ zu \t zugelassen werden:
(^\t)$Search(\t$)

Möchte man mit diesem Ausdruck die Eintraäge eventuell ersetzen, hat man jedoch das Problem, daß mal Tabs mit gematched werden und mal nicht. Insbesondere beim mehrfachen Ersetzen (Option g) geht das ganze in die Hose, da der Tabulator am Ende des einen Treffer nicht mehr als Anfang für den nächsten Treffer herangezogen wird. Hier bräuchte man wieder einen Ausdruck, der den Tabulator als Begrenzer zwar erkennt, jedoch nicht mit ins Ergebnis zieht. Hier helfen die "zero-width lookahead assertions" bzw. "zero-width lookbehind assertions":
(^(?<=\t))$Search((?=\t)$)

Wenn man statt der "positive" Variante (= bedeutet hier ein Tab muss vorkommen) die "negative" Variante verwendet (mit ! für ungleich), würde man so etwas formulieren wie "es darf kein Zeichen folgen, daß kein Tab ist" (?![^\t]). Ein Zeilenende wäre also auch o.k.:
(?<![^\t])$Search(?![^\t])

Jetzt sieht das ganze endlich so verwirrend aus, daß man spätestens nächste Woche nicht mehr genau weiß, was man damit bezweckt hat ;-)

Gruß,
   Jörk