Wie kann ich die Gruppe von regulären Ausdrücken vorbei an der 9. Rückverweis?
Ok, so bin ich versucht zu Gruppe vorbei an der 9. Rückverweis in notepad++. Die wiki sagt, dass ich verwenden können die Gruppe benennen, gehen Sie vorbei am 9. Referenz. Aber ich kann nicht scheinen, um die syntax richtig zu tun, das match. Ich bin gestartet mit zwei Gruppen zu machen es einfach.
Sample-Daten
1000,1000
Regex.
(?'a'[0-9]*),([0-9]*)
Entsprechend der docs muss ich Folgendes tun.
(?<some name>...), (?'some name'...),(?(some name)...)
Names this group some name.
Aber das Ergebnis ist, dass es nicht finden können, mein text. Irgendwelche Vorschläge?
- Autsch...9 back-Referenzen? Sind Sie sicher, dass Sie nicht vielleicht über-etwas kompliziert?
- Überhaupt nicht, ich bin Wiederherstellung der Datenbank-Daten, und mit notepad++ zu formatieren, werden die insert-Anweisungen.
- In diesem Fall, warum nicht einfach generieren Sie insert-Anweisungen über eine scripting-Sprache?
- Ich denke, ich könnte, aber ich habe besucht diese vor mit Notepad++ und habe versucht, in der Vergangenheit in der 9. Referenz-und konnte es nicht. So, jetzt bin ich nur versucht, es geschehen zu lassen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie einfach Referenz Gruppen > 9 in der gleichen Weise wie die < 10
ich.e $10 ist die zehnte Gruppe.
Für (naive) Beispiel:
String:
Regex finden:
Ersetzen:
Ergebnis:
Mein test wurde durchgeführt, in Notepad++ v6.1.2 und gab das Ergebnis habe ich erwartet.
Update: funktioniert Dieser immer noch, wie der v7.5.6
SarcasticSully auferstandene diese Frage zu stellen:
Dies zu tun, ändern Sie die ersetzen:
Dem Austausch mit der Gruppe 1 und der hex-Zeichen
30
- das ist ein0
in ascii.Sehr verspätete Antwort, anderen zu helfen, die land hier von Google (so wie ich). Benannt Rückverweise in notepad++ Substitutionen wie folgt Aussehen:
$+{name}
. Aus welchem Grund auch immer.Gibt es eine Abweichung vom standard-regex-gotcha hier, obwohl... mit Namen Rückverweise sind ebenfalls gegebene zahlen. In der standard-regex, wenn Sie
(.*)(?<name> & )(.*)
sind, möchten Sie ersetzen mit$1${name}$2
zu bekommen, die genau die gleiche Linie, die Sie mit gestartet. In notepad++, Sie müssten$1$+{name}$3
.Beispiel: ich musste Aufräumen ein Visual Studio .sln-Datei für die nicht übereinstimmenden Konfigurationen. Der text, den ich brauchte, um zu ersetzen, die wie folgt aussah:
Meine Suche RegEx:
Meine Ersatz-RegEx:
Das Ergebnis:
Hoffe, das jemand hilft.
OK, die Abstimmung ist kein problem, Ihr Beispiel trifft für mich in der aktuellen Notepad++. Dies ist ein wichtiger Punkt. Zu verwenden PCRE-regex in Notepad++, benötigen Sie eine Version >= 6.0.
Anderen Punkt, wo Sie wollen, zu verwenden, der Rückverweis? Ich kann die Namen Rückverweise ohne Probleme innerhalb der regex, aber nicht in der Ersatz-Zeichenfolge.
bedeutet
entsprechen
Aber ich weiß nicht, einen Weg für die Verwendung von benannten Gruppen oder Gruppen > 9 in der Ersatz-Zeichenfolge.
Brauchen Sie wirklich mehr als 9 rückrefenzen? Wenn Sie mehr als 9 Gruppen, aber nicht alle von Ihnen in den Austausch, dann machen die Gruppen, die Sie nicht brauchen, um die Wiederverwendung non-capturing-groups, indem ein
?:
am Anfang der Gruppe.