Ich habe kein Notepad ++ (yeah, ich weiß, ich wohne in einer Höhle), aber ich habe vi
(in Cygwin), und es scheint ähnliche Fähigkeiten zu haben. Und dieser Befehl
s/\(^\|]\)[^][]*\(\[\|$\)/\1\2/g
gab mir dein gewünschtes Ergebnis für deine Eingabe. Ich werde es hoffentlich ausführlich erklären, damit Sie es in Notepad ++ ese übersetzen können:
- Die Gesamtstruktur von
vi
‚s s ubstitute Befehl lautet:s (Trennzeichen) (find what) (Trennzeichen) (ersetzen durch) (Trennzeichen) (Optionen)
wo der herkömmliche Begrenzer ist/
und dieg
Option für g lobal steht (dh die Ersetzung in jeder Zeile so oft wie möglich durchführen). Also haben wirs / (was finden) / (ersetzen durch) / g
- Ich finde was ist
\(^\|]\)[^][]*\(\[\|$\)
. In Stücken (mit Leerzeichen zur Syntaxbeleuchtung):\( ^ \| ] \)
Dies ist eine Capture-Gruppe (\(…\)
), die aus dem Anfang der Zeile (^
) oder aus a besteht]
.[ ^ ][ ]
Eine Reihe von Zeichen.[^abc]
würde mit jedem anderen Zeichen alsa
,b
oder übereinstimmenc
. Dies entspricht einem beliebigen Zeichen außer a]
oder a[
. (In regulären Unix-Ausdrücken fügen Sie ein]
Zeichen in eine Gruppe von Zeichen ein, indem Sie es zuerst oder unmittelbar nach einem Anfangsbuchstaben^
einfügen. Offenbar in Notepad ** tun Sie dies, indem Sie mit Escapezeichen\
?)[ ^ ][ ] *
Null oder mehr der oben genannten.\( \[ \| $ \)
Eine andere Fanggruppe; Dies ist eine Art Spiegelbild des ersten. Es ist ein[
oder das Ende der Zeile. (Wir müssen dem[
mit einem entkommen\
, um es zu einem gewöhnlichen Charakter zu machen.)
- Mein Ersetzen mit ist
\1\2
,
das sind einfach die zwei Erfassungsgruppen.
Wenn Sie es auf Englisch setzen, entfernen wir Zeichenketten mit maximaler Länge, bei denen andere als [
oder ]
erscheinen
- vor dem ersten
[
(dh zwischen dem Anfang der Zeile und a[
) oder - zwischen a
]
und a[
oder - nach dem letzten
]
(dh zwischen a]
und dem Ende der Zeile).