Problème avec Regex - Recherche d'une chaîne

Bonjour,

J'ai une grosse chaîne de caractères, de type : "Début de la chaîne 989988 Fin de le chaîne".

Je souhaite extraire le numéro "989988".
Rien de compliqué jusque la, j'utilise cette expression régulière : "#[0-9]{1,}#" (qui fonctionne très bien)

Le problème, c'est que mon but est de récupérer le nombre compris entre mes 2 chaînes, Or - je ne trouve aucune fonctions preg_ capable de faire cela.
Toutes les fonctions preg_ découpent ma chaîne en 2, grâce au nombre - Mais aucune ne peut "extraire" ce nombre..

Je me retrouve donc avec un tableau :
Case[0] => "Début de la chaîne"
Case[1] => "Fin de le chaîne"

Alors que je ne veux absolument pas cela, mais plutôt :
Case[0] => "989988"

Merci pour vos réponses :)

6 réponses

  1. Alors... pour commencer:

    Quel langage utilises-tu ?
    Explique ce que tu recherches à faire:
    => Tu veux récupérer ce qu'il y a entre deux chaines ?
    => Ce que tu veux récupérer tous ce qui est numérique dans la chaine? [0-9] ?

    <?php
    $string = "Deb989988 485 354Fin";
    preg_match_all('/[0-9]+/',$string,$matches);
    print_r($matches[0]);
    // Affichera Array ( [0] => 989988 [1] => 485 [2] => 354 )
    ?>
    1
    1. Salut,

      Je ne sais pas quel est le langage utilisé, mais en règle générale pour "capturer" une portion de chaine à l'aide d'une regexp, il faut encadrer de parenthèses la regexp correspondant à la chaîne à capturer.
      0
      1. Salut

        Tu utilises quel language stp ?

        @+
        0
        1. salut!

          essai ça:

          <?php
          $string = "Début de la chaîne 989988 Fin de le chaîne";
          for($i=0; $i<strlen($string); $i++) {
          if(is_numeric($string[$i])){
          echo $string[$i];
          }
          }
          ?>

          mais s'il y a d'autres chiffres dans la chaines il va aussi les afficher.
          0
          1. Bonsoir,
            A priori si tu parle d'utiliser la fonction Regex, je pense que le langage que tu utilise est Visual Basic. Si c'est bien le cas, admettons que ta chaîne complète soit :

            21313413298998864831353

            Sachant que tu souhaite récupérer la chaîne : 989988

            Il te suffit d'utiliser le code suivant :

            Dim machaine As String     
            
            machaine = "21313413298998864831353"     
            machaine = Replace(machaine, "213134132", System.String.Empty)     
            machaine = Replace(machaine, "64831353", System.String.Empty)     
            
            MsgBox(machaine)     
            

            Il ne te reste plus qu'à suivre le principe pour la véritable valeur de ta chaîne.

            En espérant t'avoir aider

            Cordialement
            0
            1. "Toutes les fonctions preg_ [...]" Fait plus penser à du php :)

              Mais par contre, dans ton cas, il faut connaître le début de la chaine et la fin, or je ne pense pas que ça soit forcément le cas, c'est vrai que ça n'est pas très bien expliqué :s
              0
          2. Excusez pas ne pas avoir préciser (Je ne pensais que "preg" était spécifique à un langage) J'utilise cela en PHP.

            Je me suis renseigné sur les fonctions suivantes :
            preg_match
            preg_grep
            preg_quote
            preg_replace
            preg_replace_callback
            0
            1. Dans ce cas la solution proposée par Freedomsoul fonctionnera parfaitement.
              0