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 ?

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 ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-23 15:25:13686parcourir

Why Does MySQL REGEXP Throw

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