/ / Comportamiento de Werid - Expresión de expresiones regulares de Java tomada de la base de datos - Java, Regex

Comportamiento de Werid - expresión de expresiones regulares de Java tomada de DB - java, regex

Tengo expresiones regex almacenadas en DB - "\\E\\", Utilizo java para buscarlo y relacionarlo con Strings.

Pensé que dado que Java lee desde la base de datos, sabe que debe escapar de los caracteres especiales de SQL por sí mismo, y todo lo que necesito es escapar de los caracteres especiales de expresiones regulares, por lo que esta expresión realmente coincide. "\E\".

El problema es que macthes "E" en lugar "\E\" , ¿por qué?

Respuestas

2 para la respuesta № 1

Si desea usar una expresión regular para hacer coincidir un carácter de barra invertida literal, necesita usar cuatro barras diagonales inversas en una cadena Java.

  • El regex \ coincide con una barra invertida literal.
  • La cuerda "\" Denota una sola barra invertida.
  • Por lo tanto, para construir una expresión regular que consta de dos barras invertidas, necesita una cadena Java con cuatro barras invertidas.

Así que tú necesitas "\\\\E\\\\" para construir una expresión regular que coincida \E\...