Como posso usar um regex para substituir maiúsculas por minúsculas no Intellij IDEA?

92

Eu pesquisei por isso e descobri como fazer com outros analisadores regex:

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

Eu tentei estes e nenhum funciona. Por exemplo, quero usar um regex para mudar isso:

private String Name;
private Integer Bar = 2;

Para isso:

private String name;
private Integer bar = 2;

Eu tentei algo assim:

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

Nenhum deles funciona. É possível fazer isso no intellij ou é um recurso ausente? Isso é apenas para fins educacionais e o exemplo é inventado. Eu só quero saber se isso é possível fazer no intellij.

Daniel Kaplan
fonte
3
Existe um motivo pelo qual você deseja usar uma regex? O IntelliJ tem um atalho de tecla de atalho para fazer isso.
ajp15243
@ ajp15243 Isso é apenas para fins educacionais e o exemplo é inventado. Eu literalmente quero saber se isso é possível fazer no intellij.
Daniel Kaplan
3
Justo! Só queria confirmar. Encontrei a referência de sintaxe do IntelliJ Regex e, nos comentários, alguém parece fazer a mesma pergunta que você. Um moderador respondeu (e acho um pouco mal-entendido), mas a resposta indica que isso não é possível com a sintaxe regex do IntelliJ.
ajp15243
Você sempre pode escrever um plugin para isso.
Meo
1
@tieTYT gaoagong's é muito bom, vou deixá-lo pegar :).
ajp15243

Respostas:

174

Em IDEA 15, você pode usar as opções abaixo para alternar o caso de expressões capturadas. Isso agora está oficialmente documentado desde o lançamento desta versão.

  • \l: minúscula do próximo caractere
  • \u: o caso do próximo personagem
  • \L: diminui a caixa dos próximos caracteres até a \Eou o final da string de substituição
  • \U: o caso dos próximos caracteres até a \Eou o final da string de substituição
  • \E: marca o fim de uma mudança de caso iniciada por \Uou\L

Aqui está um exemplo de uso (como a documentação não é clara):

localizar: (\ w + _) + (\ w +) substituir: \ L $ 1 $ 2 \ E

O acima será convertido FOO_BAR_BAZpara foo_bar_bazetc. O $ 1 se refere ao primeiro grupo de captura encontrado (entre parênteses), $ 2 ao segundo conjunto, etc.

Para o bem da posteridade: isso foi inicialmente relatado por @gaoagong e documentado .

desseim
fonte
13

Pesquisei a resposta e depois percebi que @ ajp15243 já havia respondido isso acima. Atualmente, não há como o Intellij usar seu recurso de substituição de regex para alterar a capitalização de uma letra. Há uma breve discussão no seguinte URL sobre o recurso.

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

Você também pode votar no recurso na edição do Youtrack aqui:

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

Existe um plugin regex Intellij, mas, infelizmente, também não suporta letras maiúsculas e minúsculas.

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

Você pode apenas ter que executar os arquivos por meio de um programa perl para substituí-los corretamente.

gaoagong
fonte
1
De acordo com o youtrack, isso está sendo adicionado na versão 15 do IntelliJ
Kevin Sheehan
6

Comecei a usar o plugin do Idea Vim e aprendi a fazer coisas assim no Vim. Dessa forma, eu poderia reutilizar essas habilidades fora do Idea.

Aqui está o comando vim para fazer o que você pediu.

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

Regex sendo inserido no IDE. As barras extras são necessárias para escapar do padrão regex no Vim.

Dentro do IDE

Encontre o plug-in no IDE. insira a descrição da imagem aqui

chinto
fonte
2
Uma grande solução alternativa que provavelmente não ajudará 99% das pessoas aqui, já que elas não vão querer usar a emulação VIM. Mas, por acaso já tenho esse plugin instalado, então ele funciona para mim :)
Daniel Kaplan
1
Eu sei ... Vi e Vim parecem inúteis no início para qualquer um que use um IDE. Eu finalmente comecei a aprender Vi depois de encontrar todos eles nos servidores. Eu meio que gosto agora que não tenho que mudar de mentalidade enquanto me movo entre as ferramentas.
chinto
Estou apenas começando, ainda não sou fluente. Você acha que é mais produtivo editando no Intellij-IDEA com IDEAVim do que antes de usar o Vi?
Daniel Kaplan
1
Mais e mais .. Eu costumava ser bom com eclipse. Em seguida, mudou-se para o Intellij e aprendeu a maioria de seus truques. Então percebi que aprender Vim me tornaria bom em Servidor e Estação de Trabalho ao mesmo tempo. Também estou vendo que o Vim é muito mais poderoso na manipulação de texto e navegação. Eu ainda uso os atalhos do IDE para todas as especialidades do IDE, como refatoração e localização de referências, e vou para def, etc. É muito alternativo entre os modos.
chinto
1
Esta é uma excelente solução para quem sabe usar o vi. Eu ligo o IdeaVim quando preciso fazer substituições complexas e, em seguida, desisto novamente para aproveitar os recursos do próprio editor do Idea. Gostaria que a IdeaVim tivesse um indicador para mostrar quando está ativa, no entanto.
LS