IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Eviter de répéter l'option \s (espace) ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de FrontLine
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 173
    Par défaut Eviter de répéter l'option \s (espace) ?
    Bonjour,
    je débute avec les Regex et je ne trouve pas comment éviter de répéter l'option \s

    Exemple ici je l'ai mis 3 fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #<(\s)*img(.*)src(\s)*=(\s)*("?)(.+?)
    Ce que j'ai voulu faire c'est :
    < (espace ou pas espace) img (tout caractère) src (espace ou pas espace) = (espace ou pas espace) (" ou pas ") (l'url de l'image que je capture dans mon preg replace).
    D'ailleurs il y a surement une meilleure façon, j'utilise que les (), dans ce cas là je ne vois pas trop comment optimiser ma Regex et utiliser des [] à certains endroit plus judicieux.

    Je débute et je suis un peu largué avec les Regex, si vous avez des conseils c'est avec plaisir et attention que je m'y pencherais dessus !

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 292
    Par défaut
    \s n'est pas une option mais un métacaractère. Si tu en as besoin, il faut l'utiliser !

    Par contre, il est inutile de le mettre systématique dans des parenthèses capturantes. (\s)* et \s* reviennent au même si tu ne veux pas capturer les espaces.

    Pour ta regex, je te conseillerais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #<\s*img.+?src\s*=\s*"?(\S+?)"?#i
    qq détails :

    • .+? : n'importe quel caractère (.), répété plein de fois, mais s'arrêtant au prochain src (+? est un quantificateur paresseux, alors que + est gourmand et pourrait avaler plusieurs balises d'un coup).
    • "? : guillemet facultatif
    • (\S+?) : série de caractères non-blancs, qui sera coupée par le prochain " ou le prochain blanc (espace, retour à la ligne, tabulation, etc)
    • i final : modificateur (ou "option") rendant la regex insensible à la casse, afin que img et IMG fonctionnent tous les deux.


    Pour les conseils : lire le O'Reilly de Jeffrey Friedl, la bible absolue sur la question, excellente quel que soit ton niveau.

Discussions similaires

  1. [XL-2003] Eviter de répéter "Worksheet()" pour définir la feuille de travail
    Par cyr.odi dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/06/2013, 09h29
  2. [AC-2007] Eviter de répéter un code x fois
    Par FewRa dans le forum VBA Access
    Réponses: 7
    Dernier message: 22/01/2013, 11h17
  3. Eviter de répéter le nom d'un textbox
    Par js8bleu dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 19/07/2011, 21h06
  4. eviter espace ou niveau de saisie
    Par saidm dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 25/07/2007, 15h12
  5. Comment eviter l'erreur d'un nom composé de colonne avec espace?
    Par soror dans le forum Bases de données
    Réponses: 8
    Dernier message: 13/07/2007, 14h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo