Expression régulière complexe (pour moi)

Bonjour,

je cherche a transformer une chaîne de la façon suivante :

str="titi1 lkjsdflkj titi2 sdfmlkmlsdf tit12 kjlkmlkmlfd"

pour avoir

str="toto[1] lkjsdflkj toto[2] sdfmlkmlsdf toto[12] kjlkmlkmlfd"

c'est a dire
transformer toute les occurrence de titinnn (titi suivi de chiffre) par toto[nnn]

j'ai un problème majeur, c'est que pour le moment quand je fait la tranformation, sur les occurence avec plusieur chiffres, il me traite uniquement le premier.

titi12 ==> toto[1]2

je n'arrive pas a selectionner la chaine avec le maximum de chiffre possible.

Est ce que quelqu'un a une idée ?
Configuration: Windows XP
Firefox 2.0.0.11

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Salut,

    et c'est quoi ton expression régulière, pour l'instant ?
    1. Moi je ne comprends rien du tout de ton exercice,
      soit plus explicite s'il te plait
      1. voici donc mon exemple complet

        <script>
        str="titi1 lkjsdflkj titi2 sdfmlkmlsdf titi12 kjlkmlkmlfd";
        var re=new RegExp('titi[0-9]*',"g");
        var resultat=str.match(re);
        alert(str)
        for (var i=0;i<resultat.length;i++)
        {
        var trouve=resultat[i];

        var remplace=trouve.replace('titi','params[')+']';
        var newRe=new RegExp(trouve,"g");
        str=str.replace(newRe,remplace);
        }
        alert(str);
        </script>
        1. Modérateur
          Il te manque le quantificateur dans ton expression pour la suite numérique :

          Je mettrais bien un 1 ou n fois :

          var re=new RegExp('titi[0-9]{1,}*',"g");

          1. résolu !!!!

            en fait c'est tout bête :
            il suffit que je tri mon tableau de résultat renvoyé par le match, et que je le parcours a l'envers

            <script>
            str="titi1 lkjsdflkj titi2 sdfmlkmlsdf titi12 kjlkmlkmlfd";
            var re=new RegExp('titi[0-9]*',"g");
            var resultat=str.match(re);
            alert(str)
            resultat=resultat.sort();
            for (var i=resultat.length-1;i>=0;i--)
            {
            var trouve=resultat[i];

            var remplace=trouve.replace('titi','params[')+']';
            var newRe=new RegExp(trouve,"g");
            str=str.replace(newRe,remplace);
            }
            alert(str);
            </script>