Ist es in Eclipse möglich, die übereinstimmende Suchzeichenfolge als Teil der Ersetzungszeichenfolge zu verwenden, wenn eine Suche und Ersetzung für reguläre Ausdrücke durchgeführt wird?
Grundsätzlich möchte ich alle Vorkommen von ersetzen
variableName.someMethod()
mit:
((TypeName)variableName.someMethod())
Wobei Variablenname ein beliebiger Variablenname sein kann.
In sed könnte ich so etwas gebrauchen wie:
s/[a-zA-Z]+\.someMethod\(\)/((TypeName)&)/g
Das heißt, & repräsentiert die übereinstimmende Suchzeichenfolge. Gibt es etwas Ähnliches in Eclipse?
Vielen Dank!
Antworten:
Ja, "()" erfasst eine Gruppe. Sie können es wieder mit $ i verwenden, wobei i die i-te Erfassungsgruppe ist.
So:
Hinweis: CTRL+ Spacein den Textfeldern gibt Ihnen alle möglichen Vorschläge für das Schreiben regulärer Ausdrücke.
quelle
stringVar.equals("xxx")
durch ersetzen"xxx".equals(stringVar)
. Ich habe im Dialogfeld Suchen / Ersetzen den folgenden regulären Ausdruck verwendet:search: ([^()! ]+).equals\("(.*)"\)
,replace: "$2".equals\($1\)
.Verwenden von ...
search = (^. * Import) (. *) (\ (. * \) :)
replace = $ 1 $ 2
... ersetzt ...
...mit...
Blöcke in Regex werden durch Klammern abgegrenzt (denen kein "\" vorangestellt ist)
(^. * Import) findet "von Schecks importieren" und lädt es auf $ 1 (Eclipse beginnt bei 1 zu zählen)
(. *) Finde das nächste ". alles "bis zur nächsten Begegnung" ("und lädt es auf $ 2. $ 2 stoppt bei" ("wegen des nächsten Teils (siehe nächste Zeile unten)
(\ (. * \) :) sagt" bei der ersten Begegnung "(). ( ' einen beliebigen Text') ". nach Block $ 2 ... Anschlagblock $ 2 beginnen und starten 3 $ 3 $ mit dem geladen wird ":" oder, im Beispiel die "(_list):"
Dann in der ersetzen, setzen Sie einfach die $ 1 $ 2, um alle drei Blöcke durch nur die ersten beiden zu ersetzen.
quelle
NomeN hat richtig geantwortet, aber diese Antwort wäre für Anfänger wie mich nicht von großem Nutzen, da wir ein weiteres Problem lösen müssen und nicht wissen, wie wir RegEx dort verwenden sollen. Deshalb füge ich dem eine Erklärung hinzu. Die Antwort ist
Hier:
Auf der Suche:
Das erste und letzte '(' ')' zeigt eine Gruppe in Regex
'\ w' zeigt Wörter (alphanumerisch + Unterstrich)
'+' zeigt einen oder mehrere (dh einen oder mehrere alphanumerische + Unterstriche)
'.' ist ein Sonderzeichen, das ein beliebiges Zeichen darstellt (dh + bedeutet eines oder mehrere Zeichen). Weil dies ein Sonderzeichen ist, um ein '.' wir sollten damit einen Fluchtcharakter geben, dh '.'
'someMethod' wird so angegeben, wie es durchsucht werden soll.
Die beiden Klammern '(', ')' werden zusammen mit dem Escape-Zeichen angegeben, da es sich um Sonderzeichen handelt, die zur Darstellung einer Gruppe verwendet werden (wir werden im nächsten Punkt auf die Gruppe eingehen).
In ersetzen:
Es wird ' ((TypeName) $ 1) ' angegeben, hier zeigt $ 1 die Gruppe. Das sind alle Zeichen, die in der ersten und letzten Klammer '(', ')' im Suchfeld eingeschlossen sind
Stellen Sie außerdem sicher, dass Sie die Option "Regulärer Ausdruck" aktiviert haben, um ein Ersetzungsfeld zu finden
Weitere Informationen zu RegEx finden Sie unter http://regexr.com/ .
quelle
Zumindest bei STS (SpringSource Tool Suite) sind die Gruppen ab 0 nummeriert, daher wird die Zeichenfolge ersetzt
quelle
Für jemanden, der eine Erklärung und ein Beispiel für die Verwendung eines Regxp in Eclipse benötigt. Hier ist mein Beispiel, das das Problem veranschaulicht.
Ich möchte umbenennen
zu
Und davon kann es mehrere geben.
Hier ist, wie es gemacht werden sollte.
Klicken Sie dann auf die Schaltfläche Suchen / Ersetzen
quelle