# 1139 – Obtuvo el error ‘operando operador de repetición inválido’ de la expresión regular

Tengo problemas para usar una expresión regular para seleccionar algunos resultados de mi tabla MySQL.

Estoy usando esta consulta

SELECT text FROM `articles` WHERE content REGEXP '.*<img.*?src=\"http://www' ORDER BY date DESC 

Y dice

 #1139 - Got error 'repetition-operator operand invalid' from regexp 

Probé la expresión regular con Notepad ++ y funciona, ¿por qué MySQL me está dando este error y cómo puedo solucionarlo?

De acuerdo con el manual de MySQL

MySQL utiliza la implementación de expresiones regulares de Henry Spencer, cuyo objective es la conformidad con POSIX 1003.2

Las expresiones regulares POSIX no son compatibles con el uso del signo de interrogación ? como un modificador no codicioso (perezoso) de los cuantificadores estrella y plus como PCRE (Perl Compatible Regular Expressions). Esto significa que no puedes usar +? y *?

Parece que solo tendrás que usar la versión codiciosa, que aún debería funcionar. Para evitar la coincidencia de elementos como , puede usar un clase de carácter negada:

']*src="http://www'

Nota: " no tiene que escaparse y el .* Al principio está implícito.

Puedes probar,

 SELECT text , IF (content LIKE '% si no puede encontrar, entonces buscará  instead". 

Espero eso ayude.

Comprobar Fiddle: http://sqlfiddle.com/#!2/6a2f0/13/0