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 :

comprends pas cette regexp [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 468
    Points : 5 826
    Points
    5 826
    Billets dans le blog
    1
    Par défaut comprends pas cette regexp
    Dans cette regexp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #<prenom|nom>(.*?)</1>#
    je ne comprends pas le (.*?) Peut-on me l'expliquer ?

  2. #2
    Membre du Club
    Femme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 26
    Points : 51
    Points
    51
    Par défaut
    Ben franchement j'ai beau utiliser les regexp je vois pas là: * veut dire que le caractère apparait de 0 à n fois...le ? signifie que le caractère apparait 0 ou une fois... donc:

    .* => n'importe quel caractère de 0 à n fois
    .*? => (n'importe quel caractère de 0 à n fois) le tout de 0 à 1 fois????

    tu la sors d'où ton expression régulière???

  3. #3
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    Le motif correct serait plutôt
    %<(prenom|nom)>(.*?)</\1>%

    Il faut utiliser une parenthèse capturante pour mémoriser le nom de la balise ouvrante et pouvoir l'utiliser plus loin grace à la réference arrière.
    <
    
    (	# 1ère Parenthèse capturante
    
    	prenom|nom	# prenom OU nom
    )
    
    >
    
    (	# 2ème Parenthèse capturante
    
    	.	# N'importe quel caractère
    	
    	*	# 0, 1 une plusieurs fois
    	
    	?	# Empecher le moteur d'être trop gourmand
    		# Ici, il s'agit de s'arrêter à la premiere
    		#balise fermante rencontrée (voir plus bas)
    )
    
    </
    
    \1	# Référence arrière
    	# Correspond à ce qui été capturé par la première parenthèse (prenom ou nom)
    
    >
    

  4. #4
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 468
    Points : 5 826
    Points
    5 826
    Billets dans le blog
    1
    Par défaut
    Merci de m'avoir répondu ; je ne vois les réponses que ce matin. Pour répondre à PtiteA2, cette regexp sort d'un bouquin ("PHP 5.3 Développez un site Web dynamique et interactif"- Olivier Heurtel).
    Pour Eric2A, ta regexp est : tu as visiblement oublié de refermer la première parenthèse ; on le fait où ?

  5. #5
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Attention la lib .NET n'est la meme que PHP qui est basé sur PCRE

  7. #7
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Citation Envoyé par laurentSc
    tu as visiblement oublié de refermer la première parenthèse ; on le fait où ?
    L'erreur (corrigée) se trouvait dans l'explication du motif décortiqué. C'était plus simple pour toi de copier/coller la regex correcte présentée sur une ligne...
    Citation Envoyé par Eric2a
    Le motif correct serait plutôt
    %<(prenom|nom)>(.*?)</\1>%

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 468
    Points : 5 826
    Points
    5 826
    Billets dans le blog
    1
    Par défaut
    Oui, t'as raison ; j'avais pas vu les parenthèses et ai pensé que tu avais recopié ma regexp !

  9. #9
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    merci stealth35
    Attention la lib .NET n'est pas la même que PHP qui est basé sur PCRE
    je suis parti du principe qu'elle est la même. merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Je ne comprend pas cette instruction
    Par Nono Sto dans le forum Général Python
    Réponses: 2
    Dernier message: 13/04/2010, 00h56
  2. [PHPExcel] Comprend pas cette écriture ?
    Par a028762 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 05/07/2009, 15h07
  3. Je ne comprends pas cette ligne de code
    Par beegees dans le forum C++
    Réponses: 17
    Dernier message: 13/05/2008, 11h02
  4. Comprend pas cette commande SED
    Par DIE dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 05/10/2006, 13h58
  5. [Boolean]Je ne comprend pas cette instruction
    Par jcachico dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/01/2006, 16h25

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