Maison > Article > base de données > Pourquoi MySQL REGEXP renvoie-t-il « Erreur #1139 : opérande d'opérateur de répétition non valide » et comment puis-je y remédier ?
Erreur n° 1139 : opérande d'opérateur de répétition non valide dans une expression régulière
Lors de l'interrogation d'une table MySQL avec une expression régulière (regex) pour sélectionner un élément spécifique résultats, les utilisateurs rencontrent parfois l'erreur "#1139 - Erreur obtenue 'opérande d'opérateur de répétition invalide' de regexp."Cette erreur indique que l'expression régulière fournie contient un opérande d'opérateur de répétition non valide.
Cause :
L'erreur survient parce que MySQL utilise le POSIX- de Henry Spencer. implémentation conforme des expressions régulières. Cette implémentation ne prend pas en charge les quantificateurs non gourmands comme « ? » utilisés dans PCRE (Perl Compatible Regular Expressions). Par conséquent, utiliser "?" après "*" ou " " dans une expression régulière déclenchera une erreur.
Solution :
Pour résoudre ce problème, remplacez le non -quantificateur gourmand "?" avec le quantificateur glouton "*", qui effectuera quand même la correspondance nécessaire :
SELECT text FROM `articles` WHERE content REGEXP '.*<img[^>]*src="http://www' ORDER BY date DESC
De plus, pour éviter de faire correspondre des chaînes telles que ou