
Ich habe 30.000 Textzeilen, die eine beliebige Anzahl von Leerzeichen enthalten. Ich muss nur dem ersten LEERZEICHEN in jeder Zeile ein Zeichen hinzufügen. Jeder, der etwas vorschlagen kann, wäre sehr dankbar.
Antwort1
- Ctrl+H
- Finde was:
^\S+\h\K
- Ersetzen mit:
%
- check Umwickeln
- check Regulärer Ausdruck
- Replace all
Erläuterung:
^ # beginning of line
\S+ # 1 or more non space
\h # 1 horizontal space
\K # forget all we've seen until this position
Ersatz:
% # the character to insert
Gegeben:
I have 30,000 lines of text that have randon
number of spaces in them. I need to add a character
to just the first SPACE in each line.
Any who can suggest anything would be
greatly appreciated.
Ergebnis für gegebenes Beispiel:
I %have 30,000 lines of text that have randon
number %of spaces in them. I need to add a character
to %just the first SPACE in each line.
Any %who can suggest anything would be
greatly %appreciated.
Antwort2
Probieren Sie TextPad aus. Sie können Makros aufzeichnen und dann wiedergeben. Notieren Sie also, was Sie in der ersten Zeile tun möchten, und lassen Sie den Cursor nach Abschluss der ersten Zeile am Anfang der nächsten Zeile. Spielen Sie dann einfach das Makro bis zum Ende der Datei ab. Oder halten Sie einfach die Makro-Wiedergabetaste gedrückt.
Antwort3
Was Sie suchen, sind reguläre Ausdrücke. Als erstes sollten Sie Ihre Suche in reguläre Ausdrücke umwandeln
Das macht mir Freude, denn ich glaube, ich weiß genau, wie ich das lösen kann
https://regex101.com/r/aW4gG2/1
Der gewünschte Ausdruck lautet:
Suchen: (^.*?)( )
Ersetzen:\1#\2
Das funktioniert folgendermaßen: In regulären Ausdrücken ()
bedeutet das "Capture". Das heißt, es wird diese hochspezifische Gruppe gefunden und dann können Sie beim Ersetzen mit \1 oder \2 oder \3 darauf verweisen. Die Nummer beginnt bei 1 und Sie zählen ab der öffnenden Klammer
^
bedeutet, am Zeilenanfang zu beginnen. (Da Ihr Einfügen das ERSTE Leerzeichen abdecken soll, suchen wir von vorne beginnend nach dem ersten Leerzeichen.)
.*?
Dieser Teil findet das erste Wort vor dem Leerzeichen. Dies geschieht, indem in einer Gruppe beliebiger Zeichen ( .
) so viele wie möglich ( *
) aber so wenige wie nötig ( ) gebildet werden ?
. Ohne das Fragezeichen erfassen Sie einfach alle Zeichen (einschließlich aller Leerzeichen).
( )
Dieser Teil bedeutet, dass unsere zweite Gruppe das Leerzeichen nach dem ersten ist. Dies sollte das erste Leerzeichen sein. Hier möchten wir unser Zeichen einfügen.
Die Substitution
\1#\2
\1
bezieht sich auf den ersten Zeichensatz. Und das *
im Ausdruck bedeutet, dass der Zeichensatz ein Wort beliebiger Länge einschließlich 0 sein kann.
#
ist das Einfügezeichen
\2\
ist natürlich der Platz.
Das Ergebnis ist, dass #
vor jedem ersten Leerzeichen ein a steht. Wenn Sie es NACH dem ersten Leerzeichen haben möchten, ist es ganz einfach, die Ersetzung anzupassen.
\1\2#
fügt das #
nach jedem ersten Leerzeichen pro Zeile ein.
Das ist die Stärke regulärer Ausdrücke. Ein einfaches Suchen und Ersetzen kann das Einfügen präziser durchführen als jedes Makro. Es ist flexibel, es ist schnell und meistens nicht so schwer.
Hier ist ein tolles Einsteiger-Tutorial, das erklärt, was RegEx ist und warum es nützlich ist. [RegExOne]. Durch REO wurde mir klar,
Dies ist ein Tutorial, das viele Leute empfehlen, mit dem ich aber ehrlich gesagt nicht viel anfangen konnte. [RegEx.Info]
Ich bin eigentlich nie wieder zu RegEx.info zurückgekehrt, sondern habe mich direkt aufNotepad++-Dokumentationwas an dieser Stelle tatsächlich sehr hilfreich war. Das und natürlich können Sie testen mit [RegEx101]. Sie müssen lediglich das /gm
in den Ausdruck einfügen. Dann können Sie einfach einen Ausschnitt in den TestString einfügen und üben, bis es richtig ist.
Antwort4
Hierfür gibt es eine ganz einfache Lösung.
Mir fiel ein, dass in Notepad++ bereits etwas vorhanden ist.
- Öffnen Sie das Fenster „Ersetzen“
- Geben Sie "^" in das Suchfeld ein, gefolgt von einem Leerzeichen oder was auch immer Sie suchen möchten.
Dadurch wird nur nach Dingen gesucht, die am Anfang Ihrer Zeile stehen. - Geben Sie im Feld „Ersetzen durch“ alles ein, was Sie benötigen.
- Suchmodus auf „Regulärer Ausdruck“ einstellen
- Klicken Sie auf Alle ersetzen
- Erledigt