Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Limites de palavras do MySQL REGEXP [[:<:]] [[:>:]] e aspas duplas


Deixe-me citar a documentação primeiro:

A partir da documentação, podemos ver a razão por trás do seu problema e não é causado por nenhum escape. O problema é que você está tentando combinar o limite da palavra [[:<:]] logo no início da string que não funcionará porque um limite de palavra como você pode ver na documentação separa um caractere de palavra de um caractere que não é de palavra, mas no seu caso o primeiro caractere é um " que não é um caractere de palavra, portanto não há limite de palavra, o mesmo vale para o último " e [[:>:]] .

Para que isso funcione, você precisa alterar um pouco sua expressão para esta:
"[[:<:]]word[[:>:]]"
 ^^^^^^^    ^^^^^^^

Observe como o limite da palavra separa um caractere não-palavra " de um caractere de palavra w no início e um " de d no final da corda.

EDITAR: Se você sempre quiser usar um limite de palavra no início e no final da string sem saber se haverá um limite real, poderá usar a seguinte expressão:
([[:<:]]|^)"word"([[:>:]]|$)

Isso corresponderá a um limite de palavra no início ou ao início da string ^ e o mesmo para o final do limite da palavra ou final da string. Eu realmente aconselho você a estudar os dados que você está tentando combinar e procurar padrões comuns e não usar expressões regulares se elas não forem a ferramenta certa para o trabalho.

Demonstração do SQL Fiddle