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.


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 lá .


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.


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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.