probleme regexp

probleme regexp - Perl - Programmation

Marsh Posté le 25-03-2008 à 12:25:18    

Bonjour,
 
Mon problème concerne les expressions régulières.
 
Je récupère une phrase et je souhaiterais en extraire des informations.
 
Elle est de la forme: racine(nombre1)*(nombre2 puissance nombre 3 )+nombre4
 
Il me faut les nombres. J'ai donc écrit une regexp qui ne fonctionne pas :x
(Sachant que le nombre 3 est en exposant)
 
/racine\((\d+\))\*(\d+)(?\d+)+(\d+)/
 
d'où vient mon erreur?
 
Merci
 
 

Reply

Marsh Posté le 25-03-2008 à 12:25:18   

Reply

Marsh Posté le 25-03-2008 à 14:12:40    

Bonjour,
 
Bah je pense déjà qu'une bonne séance de relecture "bête" pourrait aider
 
Il y a un pb de \ au début

Code :
  1. racine\((\d+\)\)


 
ensuite, la partie correspondant à  "(nb2 ^ nb3)" est complètement fausse...
 
Le +(\d+) n'est pas bon non plus, car + est un caractère spécial...
 
Ensuite, il n'y a aucun \s, donc aucun espace ne sera matché (pas très "souple" )
 
 
 

Reply

Marsh Posté le 26-03-2008 à 14:35:48    

Citation :


Il y a un pb de \ au début
Code :
 
   1. racine\((\d+\)\)
 


 
En fait j'en ai oublié un non? car je veux des "vraies" parenthèses, donc je dois les échapper de cette facon non?
 

Citation :

ensuite, la partie correspondant à  "(nb2 ^ nb3)" est complètement fausse...
 
Le +(\d+) n'est pas bon non plus, car + est un caractère spécial...
 
Ensuite, il n'y a aucun \s, donc aucun espace ne sera matché (pas très "souple" )


 
Comment le ferais tu toi?
 
Cdlt

Reply

Marsh Posté le 31-03-2008 à 01:00:41    

pardon pour ce long silence...
 
pour l'histoire des parenthèses c'est juste que tu as protégé la mauvaise...
 
Pour ce qui est du (nb2 ^ nb3), bah déjà, je ne vois pas le caractère ^ dans la regexp, et non plus les \( et \)...
 
Un des + est mal protégé...
 
Sinon, je ne veux pas te donner la solution non plus car ce n'est pas une regexp très poussée en terme de complexité...
 
L'essai erreur sur ce genre de truc marche très bien...

Reply

Marsh Posté le 31-03-2008 à 16:50:00    

en fait, pour le (nb2 ^ nb3) en fait le nb3 est vraiment a la puissance(comme sur du papier , comme le ²)

Reply

Marsh Posté le 31-03-2008 à 17:12:18    

/racine\((\d+)\)\*(\d+)²+(\d+)./
 
En fait voila, la puissance ne change jamais c'est toujours ² et aussi il y a divers mots a la fin de la phrase dont je ne veux pas me préoccuper.
 
Le point . convient il seul?
 
Ou dois je mettre une étoile quelque part?
 
dois je échapper le ² ? :p
 

Reply

Sujets relatifs:

Leave a Replay

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