|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Conseil - Consultant en systèmes d'information Inscription : novembre 2011 Messages : 80 ![]() |
Bonjour,
Dans une table, j'ai des enregistrement qui ont valeur comme par exemple : "(5+3)*2*((1>=0;-4;5)>=0;7;5*(3+4))", j'ai besoin d'une fonction qui me permet d'extraire les expressions entre parenthèses, dans ce cas par exemple: je veux récupérer (5+3) et (1>=0;-4;5) et (3+4) et ((1>=0;-4;5)>=0;7;5*(3+4)) J'ai essayé avec scan, mais il ne permet po d'extraire une expression entre deux caractères. Merci bien pour votre aide. |
|
|
00
|
|
|
#2 | ||||||
|
Membre éclairé
![]() statisticien Inscription : mai 2011 Messages : 213 ![]() |
Bonsoir,
le mieux je pense c'est d'utiliser les expressions régulières et ça va nécessiter un minimum de programmation. Il va falloir explorer ta variable avec l'expression régulière suivante : parenthese_elementaire=prxparse('s/(.*)(\()([^\(\)]*)(\))(.*)/$1[$3]$5/'); Cette expression régulière va chercher quelque chose commençant par une parenthèse ouvrante suivi de quelque chose ne contenant ni une parenthèse ouvrante ni une parenthèse fermante et suivi d'une parenthèse fermante. Elle va remplacer la parenthèse fermante par un crochet fermant et la parenthèse ouvrante par un crochet ouvrant et extraire ce qui était dans la parenthèse dans motif3. Ensuite on re transforme dans motif3 les crochets par des parenthèses et on rajoute les parenthèses à chaque extrémité. Et on répète de nouveau etc... Il faut faire un test ad hoc et répéter le processus tant que l'on trouve la parenthèse. Le code d'extraction a mettre dans la boucle est le suivant Code :
![]() J'ai donc répété 4 fois l'opération dans le code suivant Code :
Code :
|
||||||
|
|
20
|
|
|
#3 | ||
|
Membre éclairé
![]() statisticien Inscription : mai 2011 Messages : 213 ![]() |
bon voici avec une boucle du moment que tu n'a pas plus de 100 000 parenthèses ouvertes !
Code :
|
||
|
|
30
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Conseil - Consultant en systèmes d'information Inscription : novembre 2011 Messages : 80 ![]() |
Pour utiliser les expressions régulières, dois-je forcement passer par étape Data?
ou bien peux-je les inclure dans une macro function? |
|
|
00
|
|
|
#5 |
|
Membre éclairé
![]() statisticien Inscription : mai 2011 Messages : 213 ![]() |
En tant que code généré bien sûr
en tant que code générateur de code je n'ai jamais utilisé, je vais peut-être donc laissé à d'autre le soin de te répondre. Cependant ce papier parle de l'utilisation des expressions régulières dans le code macro http://www.lexjansen.com/pharmasug/2010/tt/tt10.pdf |
|
|
10
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Conseil - Consultant en systèmes d'information Inscription : novembre 2011 Messages : 80 ![]() |
Merci infiniment Jerom pour vos réponses, je vais creuser plus
|
|
|
00
|
|
|
#7 | ||
|
Candidat au titre de Membre du Club
![]() Conseil - Consultant en systèmes d'information Inscription : novembre 2011 Messages : 80 ![]() |
Bonjour les amis,
J'ai besoin cette fois d'extraire le dénominateur pour vérifier s'il est nul ou non, par exemple dans cet exemple "(5+3)/4*(3/(4-(2*2))" je veux récupérer les dénominateurs : 4 et (4-(2*2)). J'ai fé ca mais ca marche pas. Merci bien d'avance pour vos réponses. Code :
|
||
|
|
00
|
|
|
#8 |
|
Membre éclairé
![]() statisticien Inscription : mai 2011 Messages : 213 ![]() |
que se passe-t-il si tu as
'45/(2-5/(2*6-9*8))' ? Tu as toujours seulement un niveau de / dans tes chaines ? |
|
|
00
|
|
|
#9 | |||||
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 012 ![]() |
Citation:
Code :
|
|||||
|
|
10
|
Copyright © 2000-2012 - www.developpez.com