2013-09-27 5 views
6

Ich versuche, mehrere Gruppen innerhalb einer Zeichenfolge zu erfassen und sie mit einem Regex neu anordnen. Sobald ich jedoch mehr als 9 Rückverweise erreiche, ersetzen sie nicht wie erwartet.Sublime Text 2 Regex mit> 9 Rückverweisen

ZB: Dies ist ein bisschen ein künstliches Beispiel, aber es sollte veranschaulichen, was passiert.

 
Input string: abcdefghij 
Find What: ^(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)$ 
Replace With: \10 
Expected output: j 
Actual output: a0 

ich auch versucht:

 
    Replace With: $10 

Statt \10 oder $10 den Inhalt der zehnten Gruppierung Einfügen parens, fügt sie den Inhalt des ersten Gruppierung Folger durch „0“ parens.

UPDATE:

Dies funktioniert $10 in neueren Versionen von Sublime Text verwenden, aber es ist viel besser, die ${10} Syntax zu verwenden, wie unten beschrieben.

Antwort

8

Verwendung:

${10} 

Ich habe gerade versucht es, und dass für mich gearbeitet.

Ich habe auch versucht FIND:

^(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)$ 

Ersetzen durch: $10

Und es funktionierte. Ich benutze v2.0.2 Build 2221 jedoch. Das gleiche mit \10 funktioniert nicht, aber funktioniert wie Sie in Ihrer Frage beschrieben.

Es könnte sich lohnen, unter Hinweis darauf, wie gut, dass viele der regex Motoren ersetzen vom \#-Format in das $# Format verschieben, so dass vielleicht deshalb $# ist besser für mich arbeiten auch ohne Klammern.

Obwohl jetzt, wenn Sie mit der 10. Erfassung gefolgt von einer Zahl (z. B. $ 100) ersetzen wollten, sucht die Engine nach der 100. Erfassungsgruppe und wird für Ihr Beispiel durch nichts ersetzt.

+0

Verwenden von "\ {10}" ergibt "{10}", nicht "j" wie erwartet. Aber $ {10} hat funktioniert. Vielen Dank! –

+1

@ karlwilbur Richtig, deshalb habe ich '\ {10}' nicht in meiner Antwort verwendet :) – Jerry

+1

@ karlwilbur Auch verwenden Sie backticks (') für vorformatierten Code :) – Jerry

4

Sie müssen Klammern um

setzen
${10} 

diese Gewohnheit machen!

Es wird noch hilfreicher, wenn Sie tatsächlich $1 mit einer Nummer 0 anhängen möchten. Dann benötigen Sie möglicherweise ${1}0