Regexp-Capture-Gruppe in Notepad ++ ersetzen?

77

Kurze Frage: Ich habe einen regulären Ausdruck, ^(?:\b[A-Z]+\b\s+)+(.*)\d{8}der zwei Erfassungsgruppen ergibt. Ich möchte die Erfassungsgruppe 1 durch ein Leerzeichen ersetzen. Ist das möglich?

Wenn ich ersetze durch: \1ersetzt es TEST TESTER Hello, world. Another word here. 75793250-> durch Hello, world. Another word here. Ich möchte dieses Ergebnis : TEST TESTER 75793250. Ersetzen Sie das \1durch ein Leerzeichen.

Kaah
quelle
3
Ähm, soweit ich sehe, gibt es nur eine Erfassungsgruppe ...? (?: ...)ist eine nicht erfassende Gruppe.
Jerry
Ich dachte es hätte zwei, 0 und 1? Gruppe 0 ist das volle Spiel? Jedenfalls möchte ich die Gruppe, die Notepad ++ 1 aufruft, durch ein Leerzeichen ersetzen.
Kaah
Wenn ich ersetze durch: \1ersetzt es TEST TESTER Hello, world. Another word here. 75793250-> durch Hello, world. Another word here. Ich möchte dieses Ergebnis : TEST TESTER 75793250. Ersetzen Sie das \1durch ein Leerzeichen.
Kaah
Dies \1funktioniert in der neuesten Version von Notepad ++ nicht für mich, aber ich könnte es $0stattdessen zum Laufen bringen. Es scheint, dass sie die Syntax zum Ersetzen von Gruppen geändert haben.
Demoncodemonkey

Antworten:

133

Versuchen Sie es mit:

^((?:\b[A-Z]+\b\s+)+)(?:.*)(\d{8})

Und ersetzen durch:

\1\2
Jerry
quelle
1
@ Kaah Gern geschehen! :) Außerdem erinnerte mich daran, meine Notepad-Version zu aktualisieren! Ich hatte 6.1.8 auf xD
Jerry
8

Warum würdest du das tun.

Mach es so

Regex:^(\b[A-Z]+\b\s+)+(?:.*)(\d{8})

Ersetzen mit:\1 \2

Anirudha
quelle
Danke, aber das gibt es Invalid regular expressionin Notepad ++ 6.3.3. Bitte überarbeiten Sie Anirudh.
Kaah
Diese Regex wird zurückgegeben, TESTER 75793250da beim Erfassen einer wiederholten Gruppe nur die letzte Zeichenfolge angezeigt wird , mit der sie übereinstimmt. Ein weiteres Beispiel: Das Ersetzen eines Strings abcddurch einen (.)+\1d
regulären Ausdruck
6
"Warum würdest du das tun."? Weil OP es nicht wusste, stellten sie die Frage. Ein solcher Snark nützt niemandem etwas.
Jake Reece