Regulärer Ausdruck: Tabulator ausschließen



  • Hallo Forum,

    ich habe zwei Spalten die in einer Art CSV stehen. Als Trennzeichen dient ein Tabulator. Ich möchte in Notepad++ nun einen Regulären Ausdruck erstellen der die beiden Spalten abbildet.

    ^.\t.$

    Wie kann ich formulieren das im ersten Teil jedes beliebige Zeichen ausser Tabulator zugelassen ist? (Und natürlich Newline)

    Ich dachte an sowas: [. ^ \t\n], aber das geht ja nicht, weil ein ^ das nicht am Anfang steht als normales Zeichen gilt. Ich weiß auch nicht welche Zeichen in der ersten Spalte stehen können, ich weiß nur sicher das dort kein Tabulator und auch kein Newline steht.

    Der Ausdruck funktioniert zur Zeit, aber ich würde ihn gerne festklopfen.

    Danke



  • [\n\t]\t[^\n\t]$

    So?
    Zeilenanfang, 0 oder mehr Zeichen die nicht Tab und nicht Newline sind, Tab, 0 oder mehr Zeichen die nicht Tab und nicht Newline sind, Zeilenende.

    Allerdings stellt sich mir die Frage warum du nicht einfach "^.\t.$" verwendest. Wenn Tab nie in einer der Spalten vorkommt brauchst du das doch nicht auszuschließen. Dieser Fall tritt eh nie ein.
    Das müsstest du höchstens prüfen, wenn Tab vorkommen kann, aber nicht sollte. 😉



  • Ach so, jetzt versteh ich das mit der Negierung: Es sind alle Zeichen möglich bis auf die aufgeführten.
    Hier weiß ich das kein Tab drin ist, nächstes Mal aber vielleicht nicht. Da wollte ich wissen wie man das absichert.



  • abcd schrieb:

    Ach so, jetzt versteh ich das mit der Negierung: Es sind alle Zeichen möglich bis auf die aufgeführten.

    Ja, genau.

    Btw, keine Ahnung, wie du deine Regexps schreibst, aber ich finde für sowas http://rubular.com und Co. recht angenehm, damit kannst du sowas auch live ausprobieren.



  • abcd schrieb:

    Ich weiß auch nicht welche Zeichen in der ersten Spalte stehen können, ich weiß nur sicher das dort kein Tabulator und auch kein Newline steht.

    Also beim ersten Tab trennen. In der zweiten Spalte könnten ja Tabs sein.
    Dann den Regexp non-greedy machen.
    http://www.ultraedit.com/support/tutorials_power_tips/ultraedit/non-greedy-perl-regex.html



  • @nman : Ich bin gerade am Daten Filtern und werde ähnliches in einem halben Jahr wieder tun müssen. Das Rubular mit dem Permalink ist genial für die Dokumentation 🙂

    @volkard: Stimmt, so wie das Problem formuliert ist könnten in der zweiten Spalte Tabulatoren im Text sein. So wäre es dann korrekter: ([\n\t])\t(.)$


Anmelden zum Antworten