Pregunta

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 para buscar: model.put \ ((. *), (. *) \) Reemplace con: model \ [\\ 1 \] = \\ 2

Pero Intellij no parece reconocer \\ 1 y \\ 2 como referencias posteriores. También probé una sola barra oblicua, pero tampoco funciona.

¿Fue útil?

Solución

IntelliJ usa $ 1 para reemplazo referencias anteriores.

De la ayuda de IntelliJ:

  

Para obtener más información sobre las expresiones regulares y su sintaxis, consulte la documentación de java.util.regex Las referencias anteriores deben tener $ n, en lugar de \ n formato.

Otros consejos

En resumen, debe usar $ 1 para $ n para reemplazo referencias posteriores. La sintaxis \ 1 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:

  

Si necesita referir la subcadena coincidente en algún lugar fuera de la expresión regular actual (por ejemplo, en otra expresión regular como una cadena de reemplazo), puede recuperarla usando el signo de dólar ($ num, donde num = 1..n ).

Fuente: 2016.1 sintaxis de expresión regular, consejos y amp; Trucos

La ayuda contextual en el producto para expresiones regulares en Idea 9.0 (y quizás otras versiones) parece ser incorrecta. Establece esto:

  Back references
  \n
  Whatever the nth capturing group matched

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]' que se encuentra junto a " Expresión regular " opción de radio en el " Reemplazar texto " cuadro de diálogo

IDEA IntelliJ & nbsp; / & nbsp; Referencia & nbsp; / & nbsp; Referencia de sintaxis de expresiones regulares


Coincide con la 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 entre paréntesis en la subexpresión, use " (" o ") " ;.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top