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: \1
ersetzt 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 \1
durch ein Leerzeichen.
(?: ...)
ist eine nicht erfassende Gruppe.\1
ersetzt esTEST TESTER Hello, world. Another word here. 75793250
-> durchHello, world. Another word here
. Ich möchte dieses Ergebnis :TEST TESTER 75793250
. Ersetzen Sie das\1
durch ein Leerzeichen.\1
funktioniert in der neuesten Version von Notepad ++ nicht für mich, aber ich könnte es$0
stattdessen zum Laufen bringen. Es scheint, dass sie die Syntax zum Ersetzen von Gruppen geändert haben.Antworten:
Versuchen Sie es mit:
^((?:\b[A-Z]+\b\s+)+)(?:.*)(\d{8})
Und ersetzen durch:
quelle
Warum würdest du das tun.
Mach es so
Regex:
^(\b[A-Z]+\b\s+)+(?:.*)(\d{8})
Ersetzen mit:
\1 \2
quelle
Invalid regular expression
in Notepad ++ 6.3.3. Bitte überarbeiten Sie Anirudh.TESTER 75793250
da beim Erfassen einer wiederholten Gruppe nur die letzte Zeichenfolge angezeigt wird , mit der sie übereinstimmt. Ein weiteres Beispiel: Das Ersetzen eines Stringsabcd
durch einen(.)+
\1
d