Suchen und Ersetzen von Text zwischen ^ und ~ in Notepad ++

22

Ich habe eine große Textdatei, in der ich den gesamten Text zwischen dem Symbol ^ und dem Symbol ~ entfernen möchte. Dies muss auch über mehrere Zeilen hinweg funktionieren.

Ich habe versucht, ein reguläres Suchen und Ersetzen mit ^*~im Feld Suchen und nichts im Feld Ersetzen durchzuführen, aber es wurden 0 Ergebnisse gefunden.

Pracht
quelle

Antworten:

23

Dies ist bei einem regulären Suchen und Ersetzen nicht möglich . Wenn Sie Notepad ++ 6 verwenden, können Sie die neue Regex-Engine nutzen, die PCRE ( Quelle ) unterstützt.

Drücken Sie Ctrl+ H, um das Dialogfeld Suchen und Ersetzen zu öffnen, und führen Sie die folgende Aktion aus:

Find what:          \^.*?~
Replace with:       
Wrap around:        checked
Regular expression: selected
. matches newline:  checked

Drücken Sie jetzt Alt+ A, um alle Vorkommen zu ersetzen.

Der reguläre Ausdruck in Find what setzt sich wie folgt zusammen:

  • \^ist ein wörtliches ^ .
  • .*? ist die Mindestanzahl von Zeichen, mit der der reguläre Ausdruck übereinstimmen kann.
  • ~ist ein wörtliches ~ .
Dennis
quelle
3
Wenn Sie. *? ~ auf [^ ~] * ~ ändern, sollte dies funktionieren, ohne PCRE zu benötigen / zu verwenden.
Barlop
1
@barlop: Ich habe reguläres Suchen und Ersetzen als Suchmodus gewählt: Normal , nicht Suchen und Ersetzen mit regulären Ausdrücken. Das könnte ein Missverständnis gewesen sein. Auf jeden Fall unterstützten Versionen vor 6, wenn ich mich richtig erinnere, keine mehrzeiligen Muster.
Dennis
Das .*?Muster arbeitete für mich, um zwischen Buchstaben von ;und zu suchen <. Die Suche lautet also "FIND ;.*?<REPLACE" ;mit den für Regular expressionund ausgewählten Optionen.. matches new line
SherlockSpreadsheets
8

Du wirst suchen \^.*?~und sicherstellen wollen . entspricht newline ist aktiviert:

Bildbeschreibung hier eingeben

Dies liegt daran, dass ^es eine besondere Bedeutung hat und dem Zeilenanfang entspricht. Daher müssen wir es mit einem Backslash umgehen \^.

Das Schreiben ^*würde mit "einer beliebigen Anzahl von Zeilenanfang in einer Reihe" übereinstimmen. .*stimmt mit "einem beliebigen Zeichen" überein, entspricht jedoch standardmäßig nicht den Zeilenumbrüchen.

Der Hochstapler
quelle
2
Sei vorsichtig mit dem gierigen Verhalten des Regex. Wenn es mehrere ~Zeichen gibt (oder mehrere Übereinstimmungen), wird die erste ^bis zur letzten übereinstimmen ~.
Heavyd
@heavyd <question> Sind Sie sicher? </ question>. Er hat verwendet, *?dass nicht gierig ist, es ist faul, .*?~wird nie mehr als einer entsprechen ~. Also ist es in Ordnung.
Barlop
@barlop: Er kommentierte kurz nachdem ich geantwortet hatte. Es war ein Ninja-Edit.
Der Hochstapler
2

Versuchen Sie, diesen regulären Ausdruck im Abschnitt Suchen \^[^~]*~ zu verwenden, um alles zwischen ^ und ~ einschließlich zu ersetzen.

barlop
quelle
und exklusiv, dann nehme ich an, dass PCRE erforderlich ist, dann mache ich etwas (? <= ^) [^ ~] * (? = ~) Ich habe kein n ++ zum Testen, aber wenn dies fehlschlägt, versuche ich es zu ändern (? <= ^) ) bis (? <= \ ^)
barlop
Für ausschließlich ersetzen Sie einfach mit ^~.
Dennis
@Dennis Ich meine, wenn er alles zwischen ^ und ~ ersetzen will, aber nicht einschließlich ^ und ~
Barlop
1
Ist das nicht das , was Sie bekommen , wenn Sie ersetzen \^[^~]*~mit ^~?
Dennis
@Dennis oh ich verstehe was du meinst, guter Punkt.
Barlop
0

Ich hatte eine ähnliche ZWISCHEN Ersatzanforderung für Start- und Endzeichen. Dies kam aus Outlook-E-Mail; Hunderte von Mitgliedern und ich wollten nur die Personennamen mit allem, was zwischen <RemoveTextHere entfernt wurde> .

Original

First1 Last1 <[email protected]>; First2 Last2 <[email protected]>; First3 Last3 <[email protected]>; First4 Last4 <[email protected]>;

Dennis war nah an meiner Lösung, Find what: \^.*?~aber ich musste meine wörtlichen Zeichen ändern und Find what: \<.*?>dann den ersten Schrägstrich entfernen Find what: <.*?>.

Aktualisiert Find what: <.*?> ; Leer ersetzen.

First1 Last1 ; First2 Last2 ; First3 Last3 ; First4 Last4

_

Sonderzeichen : *, $, \, +, ^, (und ), [, ], {und}

Sonderzeichen werden von Jerry Jeremiah hier /programming/37742519/notepad-wildcard beschrieben .

Sherlock-Tabellen
quelle
Das beantwortet die Frage nicht.
Toto