Sie können die Notepad ++ Regex-Funktion Suchen und Ersetzen verwenden, um diese Aufgabe mit nur wenigen eindeutigen Ersetzungen zu erledigen. Im „Ersetzen“ Dialog, stellen Sie sicher, dass Sie setzen Modus suchen „Regulärer Ausdruck“ und das Feld neben deaktivieren Sie „Spiele Newline“
Der Prozess
durch die Reduzierung jeden indent einen Raum beginnen.Im Beispiel Sie gab, ist ein Gedankenstrich auf drei Räume gleich, so dass Sie bei der Suche nach allen Instanzen von drei Räumen und ersetzt sie mit einem Leerzeichen beginnen würden:
Suchen nach:
(drei Leerzeichen)
Ersetzen durch:
(ein einzelnes Leerzeichen) (verwenden sie „alle ersetzen“ Taste einmal)
Als nächstes finden sie alle Zeilen, die um sie herum keine Kind-Elemente haben und Klammern gesetzt:
Suchen nach:(^\s*+)(.*?)((?=($(?!\r\n)|\r\n)(?!\1)))
Ersetzen durch:$1\($2\)
(verwenden Sie „Alle ersetzen“ Taste einmal)
Als nächstes finden Sie alle Zeilen, die Kind-Gegenstände tun und umgeben die Leitung zusammen mit seine gesamte Gruppe von Kindern in einem einzigen Satz von Klammern:
Suchen nach:(^\s*+)(([^(].*?)(\r\n\1\s+.*)+)
Ersetzen durch:$1\($2\)
(Verwendung Button „Alle ersetzen“, bis es keine weiteren Spiele finden)
Schließlich ist der letzte Schritt alle Leerzeichen zu entfernen, die zwischen den Klammern sind, so dass die endgültige Ausgabe wie folgt aussieht Ihr Beispiel Ausgabe:
suchen nach:([()])\s+([()])
Ersetzen durch:$1$2
(Verwendung Button "alle ersetzen", bis es keine weiteren Übereinstimmungen findet)
Beispiel
Probeneingang:
line01
line01.01
line01.02
line01.03
line01.04
line01.04.01
line01.04.02
line01.04.03
line01.04.04
line01.05
line01.06
line01.06.01
line01.06.02
line02
line02.01
line02.01.01
line03
line04
line05
line06
line06.01
line06.01.01
line06.01.01.01
line06.01.01.02
Ausgang (vor alle Leerzeichen entfernen):
(line01
(line01.01)
(line01.02)
(line01.03)
(line01.04
(line01.04.01)
(line01.04.02)
(line01.04.03)
(line01.04.04))
(line01.05)
(line01.06
(line01.06.01)
(line01.06.02)))
(line02
(line02.01
(line02.01.01)))
(line03)
(line04)
(line05)
(line06
(line06.01
(line06.01.01
(line06.01.01.01)
(line06.01.01.02))))
Ausgang (nach allen Leerzeichen entfernen):
(line01(line01.01)(line01.02)(line01.03)(line01.04(line01.04.01)(line01.04.02)(line01.04.03)(line01.04.04))(line01.05)(line01.06(line01.06.01)(line01.06.02)))(line02(line02.01(line02.01.01)))(line03)(line04)(line05)(line06(line06.01(line06.01.01(line06.01.01.01)(line06.01.01.02))))
warum Sie müssen Notepad ++ dafür benutzen? – snap
Ich kann ein anderes Programm auch verwenden, wenn es eine bessere Lösung dafür gibt. –
Sind alle Einrückungen buchstäblich ein Vielfaches von drei Leerzeichen? Oder gibt es Tabs? – Marathon55