Come posso utilizzare una regex per sostituire le maiuscole con le minuscole in Intellij IDEA?


92

Ho cercato su Google per questo e ho scoperto come farlo con altri parser di regex:

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

Ho provato questi e nessuno dei due funziona. Ad esempio, voglio usare un'espressione regolare per cambiare questo:

private String Name;
private Integer Bar = 2;

A questa:

private String name;
private Integer bar = 2;

Ho provato qualcosa di simile:

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

Nessuno di loro funziona. È possibile farlo in intellij o è una funzionalità mancante? Questo è solo per scopi educativi e l'esempio è artificioso. Voglio solo sapere se è possibile farlo in intellij.


3
C'è un motivo per cui vuoi usare una regex? IntelliJ ha una scorciatoia da tastiera per farlo.
ajp15243

@ ajp15243 Questo è solo per scopi educativi e l'esempio è artificioso. Voglio letteralmente sapere se è possibile farlo in intellij.
Daniel Kaplan

3
Giusto! Volevo solo essere sicuro. Ho trovato il riferimento alla sintassi di IntelliJ Regex e nei commenti qualcuno cerca di porre la tua stessa domanda. Un moderatore ha risposto (e penso leggermente frainteso), ma la risposta indica che questo non è possibile con la sintassi regex di IntelliJ.
ajp15243

Potresti sempre scrivere un plugin per questo.
Meo

1
@tieTYT gaoagong è abbastanza buono, glielo permetto :).
ajp15243

Risposte:


174

In IDEA 15 puoi utilizzare i seguenti interruttori per attivare / disattivare le maiuscole / minuscole delle espressioni catturate. Questo è ora ufficialmente documentato da quando è stata rilasciata questa versione.

  • \l: abbassa le maiuscole del carattere successivo
  • \u: in alto il caso del personaggio successivo
  • \L: abbassa le maiuscole dei caratteri successivi fino a \Eo alla fine della stringa di sostituzione
  • \U: aumenta il caso dei caratteri successivi fino a \Eo alla fine della stringa di sostituzione
  • \E: segna la fine di una modifica del caso avviata da \Uo\L

Ecco un esempio di utilizzo (poiché la documentazione non è chiara):

trova: (\ w + _) + (\ w +) sostituisci: \ L $ 1 $ 2 \ E

Quanto sopra verrà convertito FOO_BAR_BAZin foo_bar_bazecc. $ 1 si riferisce al primo gruppo di cattura trovato (tra parentesi), $ 2 al secondo set, ecc.

Per i posteri: questo è stato inizialmente segnalato da @gaoagong e documentato .


13

Ho cercato la risposta e poi mi sono reso conto che @ ajp15243 ha già risposto sopra. Attualmente non è possibile in Intellij utilizzare la funzione di sostituzione delle espressioni regolari per modificare il caso di una lettera. C'è una breve discussione al seguente URL sulla funzione.

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

Puoi anche votare per la funzione nel numero di Youtrack qui:

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

Esiste un plug-in per le espressioni regolari Intellij, ma purtroppo non supporta nemmeno il maiuscolo e il minuscolo.

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

Potrebbe essere necessario eseguire i file tramite un programma perl per sostituirli correttamente.


1
Secondo il youtrack, questo viene aggiunto nella versione 15 di IntelliJ
Kevin Sheehan il

6

Ho iniziato a usare il plugin Idea Vim e ho imparato a fare cose come questa in Vim. In questo modo potrei riutilizzare queste abilità al di fuori di Idea.

Ecco il comando vim per fare ciò che hai chiesto.

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

Regex immesso nell'IDE. Le barre extra sono necessarie per sfuggire al pattern regex nel Vim.

All'interno di The IDE

Trova il plugin dall'IDE. inserisci qui la descrizione dell'immagine


2
Enorme soluzione alternativa che probabilmente non aiuterà il 99% delle persone qui in quanto non vorranno utilizzare l'emulazione VIM. Ma, mi capita di avere già questo plugin installato, quindi funziona per me :)
Daniel Kaplan

1
Lo so .. Vi e Vim sembrano del male inutili all'inizio a chiunque usi un IDE. Alla fine ho iniziato ad imparare Vi dopo averli incontrati tutti nei server. Mi piace ora che non devo cambiare mentalità mentre mi sposto tra gli strumenti.
chinto

Ho appena iniziato, non sono ancora fluente. Pensi di essere più produttivo nell'editing in Intellij-IDEA con IDEAVim rispetto a prima che usassi Vi?
Daniel Kaplan

1
Sempre di più .. Ero bravo con le eclissi. Poi è passato a Intellij e ha imparato la maggior parte dei suoi trucchi. Poi ho capito che imparare Vim mi avrebbe reso bravo in Server e Workstation contemporaneamente. Sto anche vedendo che Vim è molto più potente nella manipolazione del testo e nella navigazione. Uso ancora le scorciatoie IDE per tutte le specialità IDE come il refactoring e la ricerca di riferimenti e vado a def ecc. Tuttavia, è molto facile passare da una modalità all'altra.
chinto

1
Questa è un'ottima soluzione per le persone che sanno come usare vi. Accendo IdeaVim quando devo fare sostituzioni complesse, poi torno di nuovo per godermi le funzionalità dell'editor di Idea. Tuttavia, vorrei che IdeaVim avesse un indicatore per mostrare quando è attivo.
LS
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.