sql >> Base de Datos >  >> RDS >> Mysql

MySQL REGEXP límites de palabras [[:<:]] [[:>:]] y comillas dobles

Permítanme citar la documentación primero:

A partir de la documentación, podemos ver el motivo de su problema y no se debe a que se haya escapado. El problema es que está tratando de hacer coincidir el límite de palabras [[:<:]] justo al comienzo de la cadena que no funcionará porque un límite de palabra, como puede ver en la documentación, separa un carácter de palabra de un carácter que no es palabra, pero en su caso, el primer carácter es un " que no es un carácter de palabra, por lo que no hay límite de palabra, lo mismo ocurre con el último " y [[:>:]] .

Para que esto funcione, necesitas cambiar un poco tu expresión a esta:

"[[:<:]]word[[:>:]]"
 ^^^^^^^    ^^^^^^^

Observe cómo el límite de la palabra separa un carácter que no es una palabra " de un carácter de palabra w al principio y un " de d al final de la cadena.

EDITAR: Si siempre desea usar un límite de palabra al principio y al final de la cadena sin saber si habrá un límite real, puede usar la siguiente expresión:

([[:<:]]|^)"word"([[:>:]]|$)

Esto coincidirá con un límite de palabra al principio o con el comienzo de la cadena ^ y lo mismo para el final del límite de palabra o fin de cadena. Realmente le aconsejo que estudie los datos que está tratando de hacer coincidir y busque patrones comunes y no use expresiones regulares si no son la herramienta adecuada para el trabajo.

Demostración de SQL Fiddle