Ich möchte die Suche durch reguläre Ausdrücke in Sublime Text 2 ersetzen. Die Dokumentation dazu ist ziemlich anämisch. Insbesondere möchte ich Gruppen ersetzen, also so etwas wie das Konvertieren dieses Textes:
Hello my name is bob
Und dieser Suchbegriff:
Finde was: my name is (\w)+
Ersetzen mit: my name used to be $(1)
Der Suchbegriff funktioniert einwandfrei, aber ich kann keine Möglichkeit finden, mithilfe der Regexp-Gruppe tatsächlich zu ersetzen.
quelle
$0
?\0
dem Nullzeichen entspricht und\0ddd
als Escapezeichen für ein Zeichen mit dem Codepunkt ddd verwendet wird). Allerdings$0
scheint in Sublime2 als „exit Marke“ nach verwendet werden sollte diese Seite (obwohl ich Probleme bei der Suche genug Beispiele habe genau ausrechnen , wie eine Ausfahrt Markierung in Sublime2 verwendet).$0
wird in Sublime Text 2/3 verwendet, um den Cursor beim Beenden einer Snippet-Erweiterung zu platzieren. Mehr zu Schnipsel .$0
ist das gesamte Regex-Match;$1
ist die erste Erfassungsgruppe.Übrigens in der obigen Frage:
Zum:
Teil finden:
Mit Ersatzteil:
Würde zurückkehren:
Ändern Sie den Find-Teil in:
Und ersetzen wird das sein, was Sie erwarten:
Während (\ w) + mit "bob" übereinstimmt, ist es nicht die Gruppierung, die Sie ersetzen möchten.
quelle
Während die vorherige Antwort richtig ist, gibt es eine wichtige Sache zu betonen! Alle die passenden Segmente in Ihrem Suchbegriff , den Sie verwenden in Ihrer wollen Ersatzzeichenfolge muss von einem geschlossenen
( )
Klammern , ansonsten diese passenden Segmente werden nicht an definierten Variablen zugänglich sein wie$1
,$2
oder\1
,\2
usw.Zum Beispiel möchten wir 'em' durch 'px' ersetzen, aber die Ziffernwerte beibehalten:
margin: $1px
odermargin: \1px
margin: ([0-9]*)em
// mit Klammernmargin: [0-9]*em
BEISPIEL FÜR RICHTIGEN FALL: Verwenden einer Suchzeichenfolge
margin: ([0-9]*)em
(in Klammern). Schließen Sie das gewünschte übereinstimmende Segment (z. B.$1
oder\1
)( )
wie folgt in Klammern ein:margin: ([0-9]*)em
(mit Klammern)margin: $1px
odermargin: \1px
FALSCHES FALLBEISPIEL: Verwenden einer
margin: [0-9]*em
Suchzeichenfolge (ohne Klammern). Das folgende Regex-Muster stimmt mit den gewünschten Zeilen überein, aber übereinstimmende Segmente sind in der ersetzten Zeichenfolge nicht als Variablen wie$1
oder verfügbar\1
:margin: [0-9]*em
(ohne Klammern)margin: $1px
odermargin: \1px
quelle
Hier ist eine visuelle Darstellung der genehmigten Antwort.
quelle
$_SESSION[(\w+)
? dankeBeachten Sie, dass Sie bei Verwendung von mehr als 9 Erfassungsgruppen die Syntax verwenden müssen
${10}
.$10
oder\10
oder\{10}
wird nicht funktionieren.quelle
1
an die zweite Erfassungsgruppe anzuhängen, für die Sie geschweifte Klammern wie verwenden müssen${2}1
. $ 21 bezieht sich auf die 21. Erfassungsgruppe, die nicht existiert.Wenn Sie sich den Artikel von Sublime Text Inofficial Documentation über Suchen und Ersetzen ansehen , sieht es so aus, als wäre
+(.+)
es die gewünschte Erfassungsgruppe ... aber ich persönlich habe sie verwendet(.*)
und sie hat gut funktioniert. Um die Art und Weise zu ersetzen, wie Sie es sagen, könnte Ihnen diese Konversation in den Foren gefallen , insbesondere in diesem Beitrag, in dem es heißt, einfach$1
die erste erfasste Gruppe zu verwenden.Und da Bilder besser sind als Worte ...
Vor:
Nach:
quelle