Partage
  • Partager sur Facebook
  • Partager sur Twitter

REGEX extraire mot commençant par une majuscule

Sujet résolu
    28 octobre 2013 à 16:51:14

    Bonjour à tous, j'ai une chaine de la forme

    "Comme Edouard était malade, il partit de la maison pour aller chez le docteur Bruce Martin."

    J'aimerais en sortir tous les termes commençant par une majuscule. (Donc ici Comme Edouard Bruce Martin).

    Je suis sur que c'est possible avec les regex et php.

    Sauf que je n'y arrive pas.

    Mes recherches sur google ne m'ont données que des réponses pour sortir des parties commençant une majuscule.

    J'ai regardé du coté de  

    preg_match_all('#^[A-Z]*#', $import, $tableau) // retourne une tableau vide
    
    preg_match_all('#^[A-Z][a-z]*#', $import, $tableau)// renvoie un tableau avec des milliers de lignes dont pas mal sont vides.

    Comme mes textes sont évidemment plus long qu'une phrase, je ne peux pas me permettre de tester tous les termes au moyen d'un while.

    Si vous avez une solution, vous me rendriez un bon service.

    • Partager sur Facebook
    • Partager sur Twitter
      28 octobre 2013 à 16:52:48

      ~\b[[:upper:]][[:alpha:]]*\b~ ?

      => tous les mots qui commencent par une majuscule et dont le reste est constitué de lettres (majuscules comme minuscules). Ce motif est normalement compatible avec tout jeu de caractères (UTF-8 à condition d'ajouter le modificateur u et pour les autres de faire un setlocale - sous réserve de disposer de ladite locale).

      Le quantificateur n'est pas forcément approprié suivant les besoins, + pourrait être plus censé. De même, si le restant du "mot" doit être constitué de minuscules, remplacer alpha par lower.

      -
      Edité par julp 28 octobre 2013 à 16:56:21

      • Partager sur Facebook
      • Partager sur Twitter
        28 octobre 2013 à 17:00:57

        Ok parfait ça fonctionne à merveille ! Merci beaucoup.

        Par curiosité :Y a t-il moyen dans une regex d'inclure une condition de taille par exemple tous les mots commençant par une majuscule et de plus de 3 caractères ?

        Ai je moyen ,sans faire une boucle, de supprimer les lignes du tableau contenant moins de 3 caractères ?

        • Partager sur Facebook
        • Partager sur Twitter
          28 octobre 2013 à 17:05:56

          Y a t-il moyen dans une regex d'inclure une condition de taille par exemple tous les mots commençant par une majuscule et de plus de 3 caractères ?

          Si, si : 3 caractères en tout : remplaces le quantificateur * par {2,} (on déduit la majuscule de début de mot)

          Ai je moyen ,sans faire une boucle, de supprimer les lignes du tableau contenant moins de 3 caractères ?

          Pas besoin en adaptant le motif en conséquence, sinon ça fait faire du travail pour rien.

          -
          Edité par julp 28 octobre 2013 à 17:07:27

          • Partager sur Facebook
          • Partager sur Twitter
            28 octobre 2013 à 17:11:34

            Une deuxième fois merci !

            Tu m'as énormément aidé

            • Partager sur Facebook
            • Partager sur Twitter

            REGEX extraire mot commençant par une majuscule

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown