Aloha
Je dois avoir un problème de mise en route avec ce langage parce que je n'arrive toujours pas à le manipuler avec aisance.
Donc voilà mon besoin :
extraire d'une chaîne (obtenue par l'instruction [FME_GetAttribute CODE_RIVOLI]) pouvant être soit C-CCCC (où C est un chiffre) soit C-ACCC (où C est un chiffre et A une lettre) la partie post tiret.

J'ai donc scripté :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
if {[FME_GetAttribute CODE_RIVOLI] != ""} then {
regexp {(\d*)-(\d{4})|(\w+\d{3})-.*} [FME_GetAttribute CODE_RIVOLI]  A_ NUM_ RIVOLI_
puts "CODE rivoli d'origine [FME_GetAttribute CODE_RIVOLI]"
puts "A_ : $A_"
puts "RIVOLI : $RIVOLI_"}
Cela fonctionne sur les chaînes toute numérique (la première branche de mon regexp) mais pas sur la chaîne "1-B001".

Quelqu'un a-t'il une idée ? Quelqu'un voit où je me suis planté ?

D'avance merci

PS. Suis-je obligé de récupéré A_ et NUM_ ? Ne puis-je pas récupérer seulement la partie de ma chaîne m'intéressant sans les deux autres (la complète et le premier membre) ?

La solution :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
if {[FME_GetAttribute CODE_RIVOLI] != ""} then {
regexp -expanded -- {(?:\d*) \- ([[:alnum:]]{4}) .*} [FME_GetAttribute CODE_RIVOLI]  A_ RIVOLI_
puts "CODE rivoli d'origine [FME_GetAttribute CODE_RIVOLI]"
puts "A_ : $A_"
puts "RIVOLI : $RIVOLI_"}