Desejo usar o recurso de localização e substituição do IntelliJ para executar a seguinte transformação:
// Replace this
model.put('foo', 'bar')
// With this
model['foo'] = bar
Eu tentei o seguinte:
Texto a encontrar: model.put\((.*),(.*)\)
Substitua por:model\[\\1\] = \\2
Mas o Intellij não parece reconhecer \\1
e \\2
ser referência. Eu também tentei uma barra, mas isso também não funciona.
java
regex
intellij-idea
Dónal
fonte
fonte
(foo)
substituir:$1bar
'+ var +'
para${var}
em algumas cordas modelo e não conseguia descobrir por que intellij não iria terminar a substituição. Acontece que$
precisa ser escapado na substituição.Em suma, você deve usar
$1
para$n
para referências de substituição posteriores.\1
sintaxe é apenas para referências anteriores na pesquisa.No IntelliJ 2016, a documentação no aplicativo é enganosa. Aqui está uma citação melhor dos documentos completos:
Fonte: sintaxe para expressões regulares de 2016.1, Dicas e truques
fonte
A ajuda contextual no produto para regex no Idea 9.0 (e talvez em outras versões) parece estar incorreta. Ele afirma o seguinte:
Mas, aparentemente, como mencionado nas respostas anteriores e é minha experiência, é realmente \ $ n para referências anteriores, em vez de \ n
Você obtém essa ajuda contextual clicando no link '[Ajuda]' ao lado da opção de rádio "Expressão regular" na caixa de diálogo "Substituir texto"
fonte
IntelliJ IDEA / Referência / Referência de sintaxe de expressão regular
Corresponde à subexpressão e lembra a correspondência. Se você precisar usar a substring correspondente na mesma expressão regular, poderá recuperá-la usando a referência anterior (\ num, onde num = 1..n). Se precisar referenciar a substring correspondente em algum lugar fora da expressão regular atual (por exemplo, em outra expressão regular no campo Substituição), você pode recuperá-la usando o sinal de dólar ($ num, onde num = 1..n). Se você precisar incluir os caracteres entre parênteses na subexpressão, use "(" ou ")".
fonte