Comment puis-je utiliser une expression régulière pour remplacer les majuscules par des minuscules dans Intellij IDEA?

92

J'ai cherché cela sur Google et j'ai découvert comment faire avec d'autres analyseurs de regex:

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

J'ai essayé ces derniers et aucun ne fonctionne. À titre d'exemple, je veux utiliser une expression régulière pour changer cela:

private String Name;
private Integer Bar = 2;

Pour ça:

private String name;
private Integer bar = 2;

J'ai essayé quelque chose comme ça:

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

Aucun d'eux ne fonctionne. Est-il possible de faire cela dans intellij, ou est-ce une fonctionnalité manquante? C'est juste à des fins éducatives et l'exemple est artificiel. Je veux juste savoir si cela est possible de le faire dans intellij.

Daniel Kaplan
la source
3
Y a-t-il une raison pour laquelle vous souhaitez utiliser une regex? IntelliJ a un raccourci clavier pour cela.
ajp15243
@ ajp15243 C'est juste à des fins éducatives et l'exemple est artificiel. Je veux littéralement savoir s'il est possible de le faire en intellij.
Daniel Kaplan
3
C'est suffisant! Je voulais juste m'en assurer. J'ai trouvé la référence de la syntaxe IntelliJ Regex , et dans les commentaires, quelqu'un cherche à poser la même question que vous. Un modérateur a répondu (et je pense que légèrement mal compris), mais la réponse indique que ce n'est pas possible avec la syntaxe d'expression régulière d'IntelliJ.
ajp15243
Vous pouvez toujours écrire un plugin pour cela.
Meo
1
@tieTYT gaoagong est plutôt bien, je le laisse l'avoir :).
ajp15243

Réponses:

174

Dans IDEA 15, vous pouvez utiliser les commutateurs ci-dessous pour basculer le cas des expressions capturées. Ceci est maintenant officiellement documenté depuis la sortie de cette version.

  • \l: réduisez la casse du caractère suivant
  • \u: remonter le cas du personnage suivant
  • \L: réduisez la casse des caractères suivants jusqu'à a \Eou la fin de la chaîne de remplacement
  • \U: remonter la casse des caractères suivants jusqu'à a \Eou la fin de la chaîne de remplacement
  • \E: marque la fin d'un changement de cas initié par \Uou\L

Voici un exemple d'utilisation (car la documentation n'est pas claire):

trouver: (\ w + _) + (\ w +) remplacer: \ L $ 1 $ 2 \ E

Ce qui précède sera converti FOO_BAR_BAZen foo_bar_bazetc Le $ 1 fait référence au premier groupe de capture trouvé (entre parenthèses), $ 2 au deuxième ensemble, etc.

Pour la postérité: cela a été initialement rapporté par @gaoagong et documenté là-bas .

desseim
la source
13

J'ai recherché la réponse puis réalisé que @ ajp15243 avait déjà répondu à cette question ci-dessus. Il n'y a actuellement aucun moyen dans Intellij d'utiliser leur fonction de remplacement de regex pour changer la casse d'une lettre. Il y a une brève discussion à l'URL suivante sur la fonctionnalité.

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

Vous pouvez également voter pour la fonctionnalité dans le numéro Youtrack ici:

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

Il existe un plugin regex Intellij, mais hélas, il ne prend pas non plus en charge les majuscules et les minuscules.

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

Vous devrez peut-être exécuter les fichiers via un programme perl pour les remplacer correctement.

gaoagong
la source
1
Selon le youtrack, ceci est ajouté dans la version 15 d'IntelliJ
Kevin Sheehan
6

J'ai commencé à utiliser Idea Vim plugin et appris à faire des choses comme ça dans Vim. De cette façon, je pourrais réutiliser ces compétences en dehors d'Idea.

Voici la commande vim pour faire ce que vous avez demandé.

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

Regex étant entré dans l'IDE. Les barres obliques supplémentaires sont nécessaires pour échapper au modèle regex dans le Vim.

Au sein de l'IDE

Trouvez Plugin dans l'EDI. entrez la description de l'image ici

chinto
la source
2
Solution de contournement énorme qui n'aidera probablement pas 99% des gens ici car ils ne voudront pas utiliser l'émulation VIM. Mais il se trouve que j'ai déjà installé ce plugin, donc ça marche pour moi :)
Daniel Kaplan
1
Je sais .. Vi et Vim semblent être du mal inutile au début pour quiconque utilise un IDE. J'ai finalement commencé à apprendre Vi après les avoir tous rencontrés sur des serveurs. J'aime un peu maintenant que je n'ai pas à changer d'état d'esprit lorsque je passe d'un outil à l'autre.
chinto
Je ne fais que commencer, je ne parle pas encore couramment. Pensez-vous que vous êtes plus productif dans le montage Intellij-IDEA avec IDEAVim qu'avant d'utiliser Vi?
Daniel Kaplan
1
De plus en plus .. J'étais doué pour l'éclipse. Puis déménagé à Intellij et appris la plupart de ses astuces. Puis j'ai réalisé que l'apprentissage de Vim me rendrait bon dans Server et Workstation à la fois. Je constate également que Vim est beaucoup plus puissant dans la manipulation de texte et la navigation. J'utilise toujours des raccourcis IDE pour toutes les spécialités IDE comme la refactorisation et la recherche de références et aller à def, etc. C'est très pour basculer entre les modes.
chinto
1
C'est une excellente solution pour les personnes qui savent utiliser vi. J'active IdeaVim lorsque j'ai besoin de faire des substitutions complexes, puis je recule pour profiter des fonctionnalités de l'éditeur d'Idea. Je souhaite qu'IdeaVim ait un indicateur pour montrer quand il est actif, cependant.
LS