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 :

Récupérer une sous-chaîne [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 155
    Par défaut Récupérer une sous-chaîne
    Bonjour,

    Je débute avec les regex, j'essaie donc de créer mes premières fonctions.

    Je veux récupérer une chaine jusqu'à sa dernière lettre, et donc supprimer ce qui suit la dernière lettre de la chaine.

    Exemple:
    091A0493K534 doit me retourner 091A0493K
    091A0515RX38 -> 091A0515RX
    061u0518TX35 -> 061u0518TX

    Voila ou j'en suis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $refint = '091A0493K534';
    preg_match ("/(.*)[a-z-A-Z]$/", $refint, $resultat);
    $refint2 = $resultat[0];
    C'est comme tout, je suppose qu'il faut pratiquer, mais pour l'instant ce n'est pas clair pour moi.

    Merci de votre aide.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Il faut supprimer l'ancre de fin de chaîne ($) sinon il ne pourra jamais y avoir correspondance sur vos chaînes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match ("/.*[a-zA-Z]/", $refint, $resultat);

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par yann123456 Voir le message
    Bonjour,

    Je débute avec les regex, j'essaie donc de créer mes premières fonctions.

    Je veux récupérer une chaine jusqu'à sa dernière lettre, et donc supprimer ce qui suit la dernière lettre de la chaine.

    Exemple:
    091A0493K534 doit me retourner 091A0493K
    091A0515RX38 -> 091A0515RX
    061u0518TX35 -> 061u0518TX

    Voila ou j'en suis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $refint = '091A0493K534';
    preg_match ("/(.*)[a-z-A-Z]$/", $refint, $resultat);
    $refint2 = $resultat[0];
    C'est comme tout, je suppose qu'il faut pratiquer, mais pour l'instant ce n'est pas clair pour moi.

    Merci de votre aide.

  4. #4
    Membre éprouvé
    Avatar de flo.87
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 77
    Par défaut
    Salut,

    Pour que ta regex soit correcte, il faut que tu enlèves le tiret central Ensuite, le "$" dans ta regex signifie la fin de la chaine. Seules les chaines qui se finissent par [a-zA-Z] font passer ta regex. Si tu veux récupérer la sous-chaine jusqu'à la dernière lettre, tu n'as pas besoin du "$".

    Cela donne :

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    pour les tests suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    tests["091A0493K534"] = "091A0493K"
    tests["091A0515RX38"] = "091A0515RX"
    tests["061u0518TX35"] = "061u0518TX"
    tests["061u0518TX35AAA"] = "061u0518TX35AAA"
    tests["0123456789"] = ""
    sur les patterns suggérés dans les réponses, les résultats sont :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    /(.*?)[^a-zA-Z]*$/ PASSED
    test (.*)[a-zA-Z]$ on 091A0515RX38  FAILED => 'NULL' != '091A0515RX'
    test (.*)[a-zA-Z]$ on 091A0493K534  FAILED => 'NULL' != '091A0493K'
    test (.*)[a-zA-Z]$ on 0123456789  FAILED => 'NULL' != ''
    test (.*)[a-zA-Z]$ on 061u0518TX35AAA  FAILED => '061u0518TX35AA' != '061u0518TX35AAA'
    test (.*)[a-zA-Z]$ on 061u0518TX35  FAILED => 'NULL' != '061u0518TX'
    /(.*)[a-zA-Z]$/ FAILED 5
    test (.*)[a-zA-Z] on 091A0515RX38  FAILED => '091A0515R' != '091A0515RX'
    test (.*)[a-zA-Z] on 091A0493K534  FAILED => '091A0493' != '091A0493K'
    test (.*)[a-zA-Z] on 0123456789  FAILED => 'NULL' != ''
    test (.*)[a-zA-Z] on 061u0518TX35AAA  FAILED => '061u0518TX35AA' != '061u0518TX35AAA'
    test (.*)[a-zA-Z] on 061u0518TX35  FAILED => '061u0518T' != '061u0518TX'
    /(.*)[a-zA-Z]/ FAILED 5

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 155
    Par défaut
    Merci de vos réponses

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/09/2014, 14h00
  2. récupérer une sous-chaîne à partie d'une chaîne
    Par aroua dans le forum Général Java
    Réponses: 8
    Dernier message: 18/04/2008, 15h36
  3. [Tableaux] Retrouver une sous chaîne.
    Par Huntress dans le forum Langage
    Réponses: 8
    Dernier message: 20/03/2006, 15h31
  4. Réponses: 28
    Dernier message: 22/09/2005, 11h57
  5. [String] Récupérer une sous -chaîne sans split
    Par Crazyblinkgirl dans le forum Langage
    Réponses: 3
    Dernier message: 19/07/2004, 14h45

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