Wie kann ich in Intellij IDEA einen regulären Ausdruck verwenden, um Groß- und Kleinschreibung zu ersetzen?

91

Ich habe danach gegoogelt und herausgefunden, wie ich mit anderen Regex-Parsern umgehen soll:

http://vim.wikia.com/wiki/Changing_case_with_regular_expressions
http://www.regular-expressions.info/replacecase.html

Ich habe diese ausprobiert und auch nicht funktioniert. Als Beispiel möchte ich einen regulären Ausdruck verwenden, um dies zu ändern:

private String Name;
private Integer Bar = 2;

Dazu:

private String name;
private Integer bar = 2;

Ich habe so etwas versucht:

replace: private (\S+) (\S+)
with: private $1 $L$2
with: private $1 \L$2
with: <etc.>

Keiner von ihnen funktioniert. Ist es möglich, dies in Intellij zu tun, oder fehlt dies? Dies ist nur zu Bildungszwecken und das Beispiel ist erfunden. Ich möchte nur wissen, ob dies in Intellij möglich ist.

Daniel Kaplan
quelle
3
Gibt es einen Grund, warum Sie einen regulären Ausdruck verwenden möchten? IntelliJ hat dafür eine Tastenkombination .
Ajp15243
@ ajp15243 Dies ist nur zu Bildungszwecken und das Beispiel ist erfunden. Ich möchte buchstäblich wissen, ob dies in Intellij möglich ist.
Daniel Kaplan
3
Meinetwegen! Ich wollte nur sicher gehen. Ich habe die IntelliJ Regex-Syntaxreferenz gefunden , und in den Kommentaren scheint jemand dieselbe Frage zu stellen wie Sie. Ein Moderator antwortete (und ich denke etwas falsch verstanden), aber die Antwort zeigt, dass dies mit der Regex-Syntax von IntelliJ nicht möglich ist.
Ajp15243
Sie könnten dafür immer ein Plugin schreiben.
Meo
1
@tieTYT Gaoagong ist ziemlich gut, ich werde ihn es haben lassen :).
Ajp15243

Antworten:

173

In IDEA 15 können Sie die folgenden Schalter verwenden, um den Fall erfasster Ausdrücke umzuschalten. Dies ist jetzt offiziell dokumentiert, seit diese Version veröffentlicht wurde.

  • \l: Verringern Sie die Groß- und Kleinschreibung des nächsten Zeichens
  • \u: bis zum Fall des nächsten Zeichens
  • \L: Verringern Sie die Groß- und Kleinschreibung der nächsten Zeichen bis \Ezum Ende der Ersetzungszeichenfolge
  • \U: den Fall der nächsten Zeichen bis zum \Eoder bis zum Ende der Ersatzzeichenfolge
  • \E: Markieren Sie das Ende einer Falländerung, die von \Uoder initiiert wurde\L

Hier ist ein Beispiel für eine Verwendung (da die Dokumentation nicht klar ist):

find: (\ w + _) + (\ w +) ersetzen: \ L $ 1 $ 2 \ E.

Das Obige wird FOO_BAR_BAZin foo_bar_bazetc konvertiert. $ 1 bezieht sich auf die erste gefundene Erfassungsgruppe (in Klammern), $ 2 auf den zweiten Satz usw.

Für die Nachwelt willen: Diese wurde zunächst berichtet von @gaoagong und dokumentiert dort .

desseim
quelle
13

Nach der Antwort gesucht und dann festgestellt, dass @ ajp15243 dies oben bereits beantwortet hat. Derzeit gibt es in Intellij keine Möglichkeit, mithilfe der Funktion zum Ersetzen von Regex die Groß- und Kleinschreibung eines Buchstabens zu ändern. Unter der folgenden URL finden Sie eine kurze Diskussion über die Funktion.

http://www.jetbrains.com/idea/webhelp/regular-expression-syntax-reference.html

Sie können hier auch für die Funktion in der Youtrack-Ausgabe stimmen:

http://youtrack.jetbrains.com/issue/IDEA-70451

Es gibt ein Regex-Intellij-Plugin, aber leider unterstützt es auch nicht das untere und obere Gehäuse.

http://plugins.jetbrains.com/plugin/19?pr=idea

Möglicherweise müssen Sie die Dateien nur über ein Perl-Programm ausführen, um sie korrekt zu ersetzen.

Gaoagong
quelle
1
Laut Youtrack wird dies in Version 15 von IntelliJ
Kevin Sheehan
6

Ich habe angefangen, das Idea Vim- Plugin zu verwenden und lerne, solche Dinge in Vim zu tun. Auf diese Weise konnte ich diese Fähigkeiten außerhalb von Idea wiederverwenden.

Hier ist der Befehl vim, um das zu tun, wonach Sie gefragt haben.

:%s/private\s\(\w*\)\s\(w*\)/private \1 \L\2/g

Regex wird in die IDE eingegeben. Die zusätzlichen Schrägstriche sind erforderlich, um dem Regex-Muster in das Vim zu entkommen.

Innerhalb der IDE

Suchen Sie das Plugin in der IDE. Geben Sie hier die Bildbeschreibung ein

Chinto
quelle
2
Riesige Problemumgehung, die wahrscheinlich 99% der Menschen hier nicht helfen wird, da sie die VIM-Emulation nicht verwenden möchten. Aber ich habe dieses Plugin bereits installiert, damit es für mich funktioniert :)
Daniel Kaplan
1
Ich weiß ... Vi und Vim scheinen für jeden, der eine IDE verwendet, am Anfang nutzlos zu sein. Ich fing schließlich an, Vi zu lernen, nachdem ich sie alle auf Servern kennengelernt hatte. Ich mag es jetzt irgendwie, dass ich nicht die Einstellung wechseln muss, wenn ich zwischen Werkzeugen wechsle.
Chinto
Ich fange gerade erst damit an, noch nicht fließend. Denken Sie, dass Sie mit IntellEA-IDEA mit IDEAVim produktiver bearbeiten als vor der Verwendung von Vi?
Daniel Kaplan
1
Immer mehr .. Ich war gut mit Eclipse. Dann zog er zu Intellij und lernte die meisten seiner Tricks. Dann wurde mir klar, dass das Erlernen von Vim mich in Server und Workstation sofort gut machen würde. Ich sehe auch, dass Vim bei der Textmanipulation und -navigation weitaus leistungsfähiger ist. Ich verwende immer noch IDE-Verknüpfungen für alle IDE-Spezialitäten wie Refactoring und Suchen von Referenzen und gehe zu Def usw. Es ist jedoch sehr wichtig, zwischen den Modi zu wechseln.
Chinto
1
Dies ist eine hervorragende Lösung für Leute, die wissen, wie man vi benutzt. Ich schalte IdeaVim ein, wenn ich komplexe Ersetzungen vornehmen muss, und ziehe mich dann wieder zurück, um die eigenen Editorfunktionen von Idea zu nutzen. Ich wünschte, IdeaVim hätte einen Indikator, der anzeigt, wann er aktiv ist.
LS