REGEX dans MySQL

Signaler
Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013
-
Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013
-
Bonjour,

Petit souci
dans un annuaire le but est de ([a-z]{2,4})$/([^/]*)du type:
http://www.site.com/pag1/
http://www.site.com/index.html
et ne garder que les url brut
http://www.site.com

DELETE * FROM tb WHERE url REGEXP 'http://www.([[:alnum:]])+([-]?[[:alnum:]])\.([a-z]{2,4})$/([^/]*)'

marche pas

ici c'est bon je crois
[http://www.([[:alnum:]])+([-]?[[:alnum:]])\.([a-z]{2,4})$ http://www.([[:alnum:]])+([-]?[[:alnum:]])\.([a-z]{2,4})$]

peut etre la fin ?
/([^/]*)

8 réponses

Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013

Oups, dommage que l'on puisse pas editer le post

le debut et le but c'est:
dans un annuaire: supprimer les URL du type:
http://www.site.com/pag1/
http://www.site.com/index.html
et ne garder que les url brut
http://www.site.com
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,

la flemme de construire une expreg, mais selon ta version de mysql :
LOCATE('/', 'http://www.site.com', 8) renverra 0
LOCATE('/', 'http://www.site.com/pag1/http://www.site.com/pag1/', 8) renverra 20.

Bref, si c'est > 0, tu delete.
Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013

oui mais ce n'est pas en particulier http://www.site.com/pag1/, ca peut etre : http://www.nimportequeldomaine.com/nimportorquelrep/

Donc il faut 1 REGEX a mon sens

??
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
t'as mal lu, ou mal compris, ce que fait ma fonction SQL... ;-)
Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013

oups
je teste ca !!!
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
Salut,

euh... moi je ferais un :





CREATE FUNCTION substringcount( string1 TEXT, string2 TEXT ) RETURNS REAL

DETERMINISTIC RETURN (LENGTH(string1)-LENGTH(REPLACE(string1, string2, "")))/LENGTH(string2);









et substringcount("/", SUBSTR(adresse,1,LENGTH(adresse)-1); te renvoi le nombre de
/ que tu as dans l'adresse si on supprime le dèrnier caractère, ce qui fait 2...

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013

Merci de vous occuper un peu de moi, perso je nage un peu. Je n'ai pas votre niveau.
Donc la requete je l'ai ecrit comme cela mais pas tester : c'est bon ?
mysql_query("DELETE * FROM $tb WHERE url LOCATE('/', 'url', 8) > 0");

Pour coucou747, honnete je ne sais pas mettre la requete en place. php ca va encore mais mysql, je suis novice.
Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013

Je re car d'une maniere générale ca ne marche pas:
cela va suprimer les nombreuses url de type : http://www.site.com/
Faut revenir au REGEX ???