Wie verwende ich Platzhalter in Notepad++, um den gesamten Text zu „suchen und zu ersetzen“?

Wie verwende ich Platzhalter in Notepad++, um den gesamten Text zu „suchen und zu ersetzen“?

Ich wäre wirklich dankbar für Hilfe dabei. Ich arbeite mit einem großen Textkorpus, der mit XML-Skripten markiert wurde, und ich muss ein paar Dinge aufräumen. Genauer gesagt gibt es mehrere hundert Zahlen in eckigen Klammern (z. B. „[1234]“), die ich löschen muss (einschließlich Klammern). Jede Zahl ist anders und diese Zahlen können zwischen 3 und 5 Ziffern lang sein.

Als zweites muss ich XML-Tags um einige andere Textteile setzen. Dabei handelt es sich um Namen in runden Klammern. Zum Beispiel:

Er (Herr Smith) sagte …

Was ich ändern möchte in:

Er <annot> (Mr. Smith) </annot>sagte...'.

Wie kann ich diese beiden Änderungen durchführen?

Ich habe bereits versucht, den erweiterten Modus zu verwenden und nach „[.*]“ zu suchen, aber es werden keine Treffer zurückgegeben. Wenn ich dasselbe mit RegEx versuche, erhalte ich viele Treffer, aber es scheint, als würde nach jeder einzelnen eckigen Klammer im Corpus gesucht.

Antwort1

Die eckigen Klammern sind ein spezielles Zeichen in regulären Ausdrücken ( [a-z]bedeutet jedes Zeichen im Bereich abis z), daher müssen Sie sie maskieren.

Ihr Suchausdruck würde lauten: \[\d+\](mit \d+der Bedeutung einer oder mehrerer Ziffern). Sie möchten dies jedoch nur durch die Ziffern ersetzen. Sie müssen eine Erfassungsgruppe mit Klammern einrichten und im Ersetzungsausdruck darauf verweisen. Ihre Einstellungen lauten:

  • Suchen nach:\[(\d+)\]
  • Ersetzen mit:\1

Was Ihr zweites Problem angeht, bin ich nicht sicher, ob ich es im von Ihnen angegebenen Kontext richtig verstehe. Wenn in Klammern nur Namen stehen, können Sie einfach \([^\)]+\)durch ersetzen <annot> \0 </annot>, oder vielleicht \(Mr\. [^\)]+\), wenn den Namen ein vorangestellt ist Mr..

Um ins Detail zu gehen, so funktioniert es:

  • die Klammern, nach denen Sie suchen, müssen maskiert werden (da sie normalerweise verwendet werden, um Erfassungsgruppen zu definieren, verwenden Sie also \(und\)
  • [^...]+bedeutet ein oder mehrere Zeichen, die nicht...
  • Ihr Suchausdruck besteht daher aus einer öffnenden Klammer, gefolgt von einem beliebigen Zeichen, das keine schließende Klammer ist (es sollte also mit den Namen übereinstimmen), gefolgt von einer schließenden Klammer.
  • \0stellt den gesamten gesuchten Ausdruck im Ersetzungsbereich dar

Wenn Sie über eine Liste dieser zu ersetzenden Namen verfügen, verwenden Sie am besten \(whatever name\)als Suchausdruck. Andernfalls ist dies unmöglich, da Sie mit einem regulären Ausdruck nicht „erraten“ können, was ein Name ist und was nicht.

verwandte Informationen