[PHP] Regex...

Bonjour, comme je suis vraiment nul en regex j'aimerais que vous m'aidiez c:

Je dois récupérer un fichier dico.txt, qui contient plein de mot séparés par des sauts de lignes. Mon but est de savoir combien il y a de mots qui contiennent les lettres a, b et c dans cet ordre (par exemple, abc fonctionne mais pas acb).

Voici mon code :
<?php
$fichier = file_get_contents('dico.txt');
$fichier2 = explode("\n", $fichier);
$nb_de_mots = 0;

for($nb =0; $fichier2[$nb] != false; $nb++)
{
 $fichier_dico = $fichier2[$nb];
 if (preg_match("Regex...", $fichier_dico))
 {
 $nb_de_mots++;
 }

}

echo $nb_de_mots; // À la fin le prog doit me renvoyer le nombre de mots contenant A B et C dans cet ordre


Merci d'avance

3 réponses

  1. Modérateur
    Salut,

    Essaie

    a[^ac]*b[^ab]*c

    0
    1. En fait je suis sur un site avec des épreuves, et dans cette épreuve il faut donner la réponse sous la forme mot1-mot2-mot3...

      Ta regex à l'air de marcher, me retourne abces-kabic-abject mais ça a pas l'air de marcher quand je valide la réponse sur le site...

      Merci quand même ^^'
      0
      1. Modérateur
        Alors peut être que tu dois donner un peu plus de détails.
        En ce qui concerne la regex elle trouve ce que tu demandes.
        0
    2. Peut-etre que j'ai pas compris l'épreuve alors...

      "Trouvez tous les mots contenant les lettres "a", "b" ET "c" dans cet ordre dans ce dictionnaire."

      dico : https://enigmes-a-thematiques.fr/epreuves/dico.txt
      0
      1. Précise ; si le mot est par exemple aabc, ça passe ?
        0
      2. Modérateur
        Normalement non.
        Dans la regex après le a c'est une classe de caractère qui trouveras tout sauf a et c - comme ça on respecte la 1ère condition que a est suivi d'un b

        Ensuite après b c'est une classe qui trouvera tout sauf a et b
        Et puis on trouve le c
        0
      3. siniko44 : heu, surement, car meme si il y a deux a a côtés, si la regex prend en compte le premier a, il ignore le deuxième a et voit qu'il y a un b et c après...
        0