[RESOLU] expression régulière

expression régulière [RESOLU] - Java - Programmation

Marsh Posté le 21-05-2008 à 22:44:57    

Bonjour
 
J'ai un petit problème avec mes expressions régulière en java.  
 
Voici ce que j'essaie de faire:
- j'ai une chaine qui ressemble à : 56.0+9.15-8*3.0
- je souhaite extraire chaque terme ainsi que chaque opérateur pour y mettre dans un tableau de String
 
Ce que j'ai fais

Code :
  1. Pattern p = Pattern.compile("([0-9]+\\.?[0-9]*)([+/*-]?)" );
  2. Matcher m = p.matcher(chaine);
  3. boolean b = m.matches();
  4.  
  5. System.out.println("decouper : "+chaine +"\t taille :"+m.groupCount()+"\t etat : "+b);
  6.  
  7. if(b)  
  8. {
  9. for(int i=0; i<=m.groupCount(); i++)  
  10. System.out.println("Groupe " + i + " : " + m.group(i));
  11. }


 
Le problème c'est que je ne rentre jms dans mon expression si ma chaine est complète.
Par contre si ma chaine ressemble à 15.05 ou 15.05+ alors j'arrive à extraire mes deux bouts de chaine sans problème.
 
je pense que mon problème vient du fais que je ne parcours pas la chaine mais je ne vois pas comment faire.
 
Si vous pouviez me dire ce qui coince  
 
merci


Message édité par Digaboy le 21-05-2008 à 23:56:41
Reply

Marsh Posté le 21-05-2008 à 22:44:57   

Reply

Marsh Posté le 21-05-2008 à 23:56:14    

bon après pas mal de test et un peu d'aide j'ai résolu mon problème:
 

Code :
  1. public static String[] decoupString(String chaine)
  2. {
  3. int i;
  4. Pattern p = Pattern.compile("[+/*-]" );
  5. String[] valOp = p.split(chaine,20);
  6. p = Pattern.compile("[0-9]+\\.?[0-9]*" );
  7. String[] op = p.split(chaine,20);    
  8. String[] tabRslt = new String[valOp.length+op.length-2];
  9.  
  10. for(i=0;i< valOp.length;i++)
  11.   tabRslt[2*i]=valOp[i];
  12. for(i=0;i< op.length-2;i++)
  13.  tabRslt[2*i+1] = op[i+1];
  14.  
  15. return tabRslt;
  16. }

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed