0
votes

Extraire des mots majuscules d'une chaîne

Modifier Je résolvez mon problème. C'est la solution xxx

maintenant, j'ai une autre question

chaque fois qu'elle a trouvé un mot, le mot est inséré dans une position de la matrice.

Si j'ai cette phrase "Quel est votre nom et votre nom de famille? Mon nom et mon nom de famille 'est paolo celio et la série A IIM 25 Thankbro Bro Ciao" ceci est mon code xxx

la sortie est le suivant xxx

pourquoi il ne rejoint pas la série A à la place 't imprimer a? Pourquoi le dernier mot ne fait pas partie de la sortie?

merci

éditer Je résout mon problème, c'est mon regex xxx


13 commentaires

Êtes-vous sûr de ne pas vous «saluer» dans la sortie attendue aussi?


Alors voulez-vous uniquement des mots capitalisés ou un mot contenant un caractère majuscule?


Je ne veux pas que le mot commence après le point et le premier mot si c'est le premier mot. Donc j'ai cette phrase "salut tout. Mon nom est Paloppa", le retour est "Paloppa no @ man0v


Il y a une contradiction entre votre code et votre résultat. Votre code sélectionne mon (dans mon nom et ... ) mais votre matrice résultante ne montre pas ce mon . Quel est le comportement correct et pourquoi?


@Toto j'ai oublié ça désolé. Mais je peux faire ce que j'ai dit? Paulo Celio dans la même position de tableau?


Vous pouvez certainement le faire si vous pouvez expliquer la règle, pourquoi ces deux mots doivent être joints et non quelques autres? Dans la phrase: Quel est votre nom et votre nom de famille? Mon nom et mon nom de famille sont Paolo Celio Devrait-il Votre nom et être joint?


@Toto je veux rejoindre les mots consécutifs qui commencent par une lettre majuscule. Donc, si j'ai la phrase «Qu'est-ce que votre nom et votre nom de famille? Mon nom et votre nom de famille sont Paolo Celio» Je veux rejoindre Just Paolo Celio. Si nous avons la phrase "Qu'est-ce que votre nom et votre nom de famille? Mon nom et mon nom de famille sont Paolo Celio Garden" I Wnat Rejoignez Paolo Celio Garden


OK, mais pourquoi pas votre nom et ?


Vous ne devriez pas modifier votre question pour inclure la réponse, sinon la question et les réponses initiales deviennent inutiles sans contexte. Il vaut mieux poser une nouvelle question. Avis Comment demander et Que faire avec les réponses


@Toto parce que pour l'exemple, la jointure Paolo Celio est le nom et le nom de famille. Ou par exemple, si j'ai la Premier League, je veux le rejoindre, mais si j'ai votre nom et je ne veux pas rejoindre cela ou si j'en ai hi froid, où je ne veux pas de rejoindre.


@Toto Les conditions que je pensais sont les suivantes: Vérifiez la phrase initiale. Si dans cette phrase, il y a 2-3 ou plusieurs mots consécutifs, rejoignez-le. Comment puis-je faire cela avec Preg_Match?


Il ne correspond pas à "la série A" ou le dernier mot car la règle [AZ] [AZ] + + correspond à "une lettre majuscule suivie de une ou plusieurs minuscules et un ou plusieurs espaces ».


Je l'ai résolu! Merci a tous


4 Réponses :


1
votes

Vous pouvez utiliser ..

<?php
      $test="the Quick brown Fox jumps Over the Lazy Dog";
      preg_match_all("/[A-Z][a-z]*/",$test,$op);
      $output = implode(' ',$op[0]);
      echo $output;
?>


2 commentaires

Bien que cela fonctionne avec le texte donné soit conscient du fait qu'il y a une courte arrivée à l'expression car elle fera également faille faussement des mots comme Noway (lettre capitalisée dans le mot). Cela pourrait être quelque chose que l'OP peut vivre.


Merci pour votre réponse. Mais si j'ai cette phrase "Bonjour, mon nom est Paloppa. J'ai 20 ans et j'adore le football" Je veux cette sortie "Paloppa et Football" Quelle est la condition prég_match_all?



0
votes

Pour extraire des mots complets, vous devez utiliser les limites de mots et les classes de caractères pour correspondre à la partie restante du mot et utiliser lookbehinds pour exclure le contenu précédent: xxx

si vous voulez capitaliser Les mots seulement, à l'exclusion des mots mixtes, remplacez [a-za-z] avec juste [AZ] .

Démo ici


7 commentaires

Merci mec, mais si j'ai cette phrase "Bonjour mon nom est Paloppa. J'ai 20 ans et? Bonjour! mots" homme "" Le retour est le nom I.


@Paloppa Si vous avez cette phrase, quelle est la sortie attendue? Je reçois «Nom Paloppa et Hello Words Man», pas ce que vous décrivez ...


Oui, je sais, mais je ne comprends pas quelle est l'expression régulière pour ma nouvelle demande. Pouvez-vous m'aider s'il vous plaît? Merci. Je ne veux pas d'imprimer les mots qui finissent avec ces caractères spéciaux (.?! '") Comment puis-je faire cela?


Qu'est-ce que le preg_match?


Ok mais, dans la sortie, je veux je et je ne veux pas de Paloppa. De plus, si j'ai un mot qui finit par "il me donne une erreur. Je peux donc faire? Ma phrase est" Bonjour mon nom est Paloppa. J'ai 20 ans et? Bonjour! Mots "femme" "homme" et la sortie doivent avoir nom i man


@Paloppa: Pourquoi voulez-vous i , il est suivi de '? Vous changez continuellement votre demande, s'il vous plaît, Modifiez votre question et donnez plus de cas de test avec le résultat attendu.


Whi si j'ai des exemples: ou si je suppose, ou d'autres caractères spéciaux, ils ne sont pas suscités dans la sortie? Avec cette condition, nous éliminons tous les mots avec des caractères spéciaux comme:,; "? ! etc



-1
votes

Vous pouvez utiliser le moyen le plus rapide.

  Array
(
    [0] => Hi
    [1] => There
    [2] => Is
    [3] => First
    [4] => Job
)


1 commentaires

Mise à jour des réponses



0
votes

Ceci est légèrement compliqué, quand il s'agit de cas de bord, nous définirions simplement deux classes de caractères sur la base de nos sorties et des entrées souhaitées, peut-être avec une limite de mot, avec une expression similaire à:

$re = '/(?=[^I\'])\b([A-Z][a-z\'é]+)\b/m';
$str = 'Hello my name is Paloppa. I\'m 20 And i love Football.
Hello my name is Chloé. I\'m 20 And i love Football.
Hello my name is Renée O\'neal. I\'m 20 And i love Football.';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
var_dump($matches);


0 commentaires