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.

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 ~ .

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.


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.


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 <First1.Last1@email.com>; First2 Last2 <First2.Last2@email.com>; First3 Last3 <First3.Last3@email.com>; First4 Last4 <First4.Last4@email.com>;

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 .


Das beantwortet die Frage nicht.
Toto
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.