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 :

regex simple sur chaine de caractères.


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par défaut regex simple sur chaine de caractères.
    Yo!!
    Je ne connais rien au regex, mais je sais comment les utiliser avec php.
    Voila, j'ai des lignes de texte qui sont comme ceci:



    5682) Τα παιδιά της ανεργίας. Perfection 11 4 4/2010. TRADUCTION
    9515) Victime de génocide X (Feutre sur cahier). Perfection 13 6 6/2012. Text
    6391) Brady-Illescas (Leon 2001). Perfection 11 9 10/2010. TExtextextex
    6309) Η μυστική συνάντηση στο Bandoneón. Perfection 11 8 9/2010. La rencontre secrète au Bandonéon.

    Je voudrais récupérer les informations qui se trouvent après Perfection "N1 N2 MM/YYYY."

    Perfection existe toujours.
    N1 peut etre un nombre à un ou deux chises
    N2 aussi
    MM/YYYY peut etre aussi bien 4/2012 que 11/2010.

    Ainsi, pour la première ligne, je veux récupérer "TRADUCTION", pour la deuxième "Text", et la troisième "TExtextextex", et la dernière: "La rencontre secrète au Bandonéon."

    Merci.

  2. #2
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    Au plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $subject = "une des lignes de texte";
    $pattern = '/^/\d{1,4}\.[ ]/';
    preg_match($pattern, $subject, $matches);
     
    // $matches contiendra le texte avec devant "/yyyy. " restera a éliminer ces caractères
    substr($matches, 7);

  3. #3
    Membre éprouvé
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par défaut
    Quand je teste, j'ai comme erreur:

    Warning: preg_match() [function.preg-match]: Unknown modifier '\'

  4. #4
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Peut ête qu'il ne reconnait pas le \d

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $subject = "une des lignes de texte";
    $pattern = '/^/[0-9]{4}\.[ ]/';
    preg_match($pattern, $subject, $matches);
     
    // $matches contiendra le texte avec devant "/yyyy. " restera a éliminer ces caractères
    substr($matches, 7);

  5. #5
    Membre éprouvé
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par défaut
    ok, mais maintenant j'ai comme erreur:
    Warning: preg_match() [function.preg-match]: Unknown modifier '['

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Fench
    Peut ête qu'il ne reconnait pas le \d
    Plus objectivement, il y a un slash en trop après le ^ qui ferme donc la regexp et fait que la suite n'est pas comprise !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre éprouvé
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par défaut
    ok,
    j'ai mis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ligne = "5682) Τα παιδιά της ανεργίας. Perfection 11 4 4/2010. TRADUCTION";
    $pattern = '/^[0-9]{4}\.[ ]/';
    preg_match($pattern,$ligne , $matches);
    mais la chaine $matches de sortie est vide.

  8. #8
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Désolé je mettais trompé à cause du / donc en changeant de délimiteur ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $pattern = '#/[0-9]{4}\. .*#';
    Ensuite le substr
    (je préfére garder le '/dddd. ' pour être plus sûr de bien matcher le cas ...)

Discussions similaires

  1. opération sur chaine de caractères
    Par Matmal11 dans le forum Linux
    Réponses: 4
    Dernier message: 31/01/2007, 11h47
  2. condition sur chaine de caractère
    Par trax44 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 24/01/2007, 15h12
  3. Travail sur chaines de caractères
    Par g.greg45 dans le forum Langage
    Réponses: 4
    Dernier message: 29/05/2006, 19h11
  4. Travail sur chaine de caractère
    Par corben dallas dans le forum Access
    Réponses: 4
    Dernier message: 02/01/2006, 19h22
  5. [Debutant][Tableau] Tableau indexé sur chaine de caractères
    Par SamRay1024 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 07/05/2004, 11h14

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