Maison > base de données > tutoriel mysql > le corps du texte

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
Libérer: 2024-11-23 15:25:13
original
651 Les gens l'ont consulté

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
Copier après la connexion

De plus, pour éviter de faire correspondre des chaînes telles que ou

Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal