Expression régulière complexe (pour moi)
pewpew2001
-
pewpew2001 -
pewpew2001 -
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 ?
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 ?
A voir également:
- Expression régulière complexe (pour moi)
- Expression écrite cm1 cm2 télécharger gratuit - Télécharger - Éducatifs
- Microsoft expression encoder - Télécharger - Divers Utilitaires
- Avoir du ping expression ✓ - Forum Réseau
- Expression de recherche - Guide
- Tableau complexe word - Guide
5 réponses
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>
<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>
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");
Je mettrais bien un 1 ou n fois :
var re=new RegExp('titi[0-9]{1,}*',"g");
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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>
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>