2012-04-01 3 views
2

Tentative de modification de l'emplacement du dossier "fichiers" d'un site Drupal de/files vers/sites/default/files.Regex Rechercher dans phpMyAdmin

Afin d'éviter de changer quoi que ce soit d'autre comme

http://www.google.com/profiles/ 

Je suis en train d'utiliser une expression régulière de base avec une limite de mot.

\bfiles/ 

Une vérification rapide à regexpal fonctionne comme prévu, mais quand je rentre dans ce qui précède dans la recherche phpMyAdmin, cochant la case « comme expression régulière », je ne suis pas le résultat escompté.

Deux questions:

  • Comment dois-je écrire mon expression avec une limite de mot pour que cela fonctionne dans phpMyAdmin? Je suis vraiment un débutant aux déclarations SQL! Serait-il possible d'écrire une requête SQL qui chercherait simplement chaque occurrence de "fichiers /" & le remplacer par "sites/default/files /"?

Répondre

4

Selon le MySql docs, l'arôme regex utilisé est POSIX 1003.2. Pour cette saveur de regex, les limites de mots sont les suivants:

[[:<:]] (début) [[:>:]] (fin)

afin que votre regex serait:

[[:<:]]files/ 

Si vous souhaitez utiliser SQL pour la recherche et remplacer toutes les occurrences de [[:<:]]files/ d'un champ spécifique dans une table, vous pouvez use a UDF such as the one found here

en outre, vous devez être conscient de ce qui suit lors de l'utilisation avec regex MySql:

Comme MySQL utilise la syntaxe d'échappement C dans les chaînes (par exemple, « \ n » pour représenter le caractère de nouvelle ligne), vous devez doubler tous les « \ » que vous utiliser dans les expressions REGEXP.

+0

pas vraiment! dans votre exemple "fichiers /" ne correspondra pas, alors si je recherche "fichiers /", "profils /" correspondra également ... – PatrickS

+0

@PatrickS Ahhh, je vois. Désolé, je n'ai pas considéré les chemins relatifs qui n'incluent pas le '/'. J'ai mis à jour ma réponse avec une meilleure solution – Robbie