Quiero usar la función de búsqueda y reemplazo de IntelliJ para realizar la siguiente transformación:
// Replace this
model.put('foo', 'bar')
// With this
model['foo'] = bar
He intentado lo siguiente:
Texto a buscar: model.put\((.*),(.*)\)
Reemplazar con:model\[\\1\] = \\2
Pero Intellij no parece reconocer \\1
y \\2
como referencias. También probé una sola barra, pero tampoco funciona.
java
regex
intellij-idea
Dónal
fuente
fuente
(foo)
reemplazar:$1bar
'+ var +'
que${var}
en algunas cadenas de la plantilla y no podía entender por qué intellij no terminaría la sustitución. Resulta$
que se debe escapar en el reemplazo.En resumen, debe utilizar
$1
a$n
para reemplazo de referencias hacia atrás.\1
la sintaxis es solo para referencias posteriores dentro de la búsqueda.En IntelliJ 2016, la documentación en la aplicación es engañosa. Aquí hay una mejor cita de los documentos completos:
Fuente: sintaxis de expresiones regulares 2016.1, consejos y trucos
fuente
La ayuda contextual en el producto para la expresión regular en Idea 9.0 (y quizás otras versiones) parece ser incorrecta. Dice esto:
Pero aparentemente, como se mencionó en respuestas anteriores y es mi experiencia, es realmente \ $ n para referencias anteriores, en lugar de \ n
Para obtener esta ayuda contextual, haga clic en el enlace '[Ayuda]' junto a la opción de radio "Expresión regular" en el cuadro de diálogo "Reemplazar texto"
fuente
IntelliJ IDEA / Referencia / Referencia de sintaxis de expresión regular
Coincide con subexpresión y recuerda la coincidencia. Si necesita usar la subcadena coincidente dentro de la misma expresión regular, puede recuperarla utilizando la referencia inversa (\ num, donde num = 1..n). Si necesita referir la subcadena coincidente en algún lugar fuera de la expresión regular actual (por ejemplo, en otra expresión regular en el campo Reemplazo), puede recuperarla usando el signo de dólar ($ num, donde num = 1..n). Si necesita incluir los caracteres de paréntesis en la subexpresión, use "(" o ")".
fuente