
Ich habe Textzeilen in Notepad++ wie die folgenden:
dog cat duck fan dog donkey
Ich möchte das zweite Vorkommen des Wortes „Hund“ durch „Pfau“ ersetzen, genau wie unten.
dog cat duck fan peacock donkey
Antwort1
Dies kann man lösen mit sog.Reguläre Ausdrücke, siehe unten. Ich bin nicht sicher, ob Sie damit vertraut sind, aber der reguläre Ausdruck (dog.*)(dog)
findet alle Zeilen, in denen das Wort „dog“ zweimal vorkommt, und $1peacock
ersetzt das Suchergebnis durch den ersten Teil der Übereinstimmung ( dog.*
), gefolgt von peacock
. Stellen Sie sicher, dass Sie den Suchmodus unten im Dialogfeld auf „Regulärer Ausdruck“ einstellen.
Das Ergebnis ist folgendes:
Antwort2
Ist es das n-te Wort oder das zweite Vorkommen eines zu ersetzenden Wortes?
Für Ersteres verwenden Sie einen regulären Ausdruck wie diesen
Geben Sie CTRL+ hfür das Ersetzungsfenster ein.
Unter „Suchen nach: ^(([^ ]+ ){4})([^ ]+ )(.*)
Ersetzen durch“: $1peacock$3
Deaktivieren Sie alle Kontrollkästchen und aktivieren Sie das Optionsfeld „Regulärer Ausdruck“
So erklären Sie den regulären Ausdruck:
^
Anker am Zeilenanfang,$
am Zeilenende()
Erstellen Sie eine Erfassungsgruppe([^ ]+ )
das[]
bezeichnet eine Klasse, das^
darin bedeutet eine negierte Klasse, also bedeutet dies - kein Leerzeichen, das+
sammelt mindestens eins, aber so viele wie möglich. gefolgt von einem Leerzeichen. Insgesamt entspricht dies dem ersten Wort.- das Folgende
{4}
erhält 4 Wörter und da dies mit einem weiteren Satz Klammern umschlossen ist, erhält diese Erfassungsgruppe die ersten vier Wörter - das nächste Wort und Leerzeichen wird ersetzt,
([^ ]+ )
gefolgt vom Rest der Zeile(.*)$
- Das Ersetzen fügt die erste (verschachtelte) Gruppe mit
$1
dem Ersatzpeacock
und dem Rest der Zeile wieder ein$3
und verwirft das 5. Wort$2