Signos de exclamación e interrogación y las expresiones regulares mysql

Señalamos en el blog de Casa de Citas que hemos realizado mejoras de búsqueda. En este caso la diferencia de búsqueda es muy concreta y tiene un claro aspecto técnico que les puede venir bien a otras personas. En la siguiente imagen podéis ver a la izquierda los resultados que aparecían cuando antes buscábamos por la palabra soy; a la derecha los nuevos resultados:

diferencias_de_busquedaComo podéis ver, en la columna de la derecha aparecen nuevas citas que antes no encontrábamos. ¿Por qué antes se le escapaba a la búsqueda la cita «¿Soy? ¡Seré!»? La respuesta se encuentra en parte en nuestra manera de buscar, y en parte en un olvido (o una laguna) tecnolígico, cultural y lingüístico.

Nuestra manera de buscar dentro de nuestras citas exige que el texto buscado sea una palabra; para ello utilizamos la función regexp y señalamos que el texto debe estar o al comienzo o al final de la cita, o debe estar rodeado de espacios o estar rodeado de signos de puntuación. Esto último lo señalamos con la clase POSIX [:punct:]. Sin embargo con esto recibíamos el problema de no recibir la cita «¿Soy? ¡Seré!». Hay que fijarse que el problema no es la puntuación, ya que sí recoge la cita «Libre soy.» donde la palabra soy está seguida de un signo de puntuación.

Como vemos, [:punct:] sí abarca el punto pero no abarca el caracter ¡. ¿Por qué no? La respuesta se consigue con la siguiente pregunta: ¿en inglés se utiliza el caracter ¡? ¿Un angloparlante consideraría que el caracter ¡ es un signo de puntuación? No. Y las expresiones regulares de mysql digamos que hablan inglés, por lo que tampoco lo entienden así.

Como dice la web Regular Expressions o la Wikipedia, la clase [:punct:] representa los caracteres:

[!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~]

Como vemos, entre estos caracteres no se encuentra ¡ ni tampoco ¿. Otros de poquísima tradición en nuestra ortografía pero sí utilizados en inglés como ‘ o & también se ven recogidos. Otros más dudosos como = o @ también están entre los escogidos, por lo que los angloparlantes podrían haber tenido a bien recoger entre los signos de puntuación los caracteres ¡ y ¿.

En el mientras, nuestra búsqueda ahora recoge de manera específica que las palabras pueden estar rodeadas de caracteres de puntuación y también de los caracteres ¡ o ¿ que la tecnología ha parecido olvidar.

Comenta

  • (will not be published)

XHTML: Puedes utilizar estos tags para que tu comentario tenga estilos o hipervínculos: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>