Wie ersetzt man das n-te Wort eines Suchergebnisses in Notepad++?

Wie ersetzt man das n-te Wort eines Suchergebnisses in Notepad++?

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 $1peacockersetzt 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.

Bildbeschreibung hier eingeben

Das Ergebnis ist folgendes:

Bildbeschreibung hier eingeben

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 $1dem Ersatz peacockund dem Rest der Zeile wieder ein $3und verwirft das 5. Wort$2

verwandte Informationen