Maison > Article > base de données > Pourquoi ma requête MySQL REGEXP échoue-t-elle avec « opérande d'opérateur de répétition invalide » ?
Lorsque vous tentez d'exécuter la requête MySQL suivante :
SELECT text FROM `articles` WHERE content REGEXP '.*<img.*?src=\"http://www' ORDER BY date DESC
vous rencontrez le erreur : #1139 - Erreur obtenue « opérande d'opérateur de répétition invalide » à partir de l'expression rationnelle. Bien que l'expression régulière fonctionne correctement dans Notepad, MySQL la rejette.
Le moteur d'expression régulière MySQL adhère à POSIX 1003.2, qui ne prend pas en charge le point d'interrogation (?) comme modificateur non gourmand dans les quantificateurs ( et ). Par conséquent, vous ne pouvez pas employer ? et ? dans vos expressions régulières.
Pour résoudre ce problème, utilisez la version gourmande du quantificateur, qui suffira toujours pour l'objectif recherché. Néanmoins, pour éviter toute correspondance indésirable d'éléments tels que :
<img>
incorporez une classe de caractères niée comme suit :
'<img[^>]*src="http://www'
N'oubliez pas que le caractère " ne nécessite pas d'échappement et que le .* au début est implicite.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!