Bonjour,

Je dois au sein d'une chaine détecter une occurrence en fonction d'un masque de référence.
La chaine doit etre composé du mot "LOT" ou du symbole "#' suivi d'une serie de chiffres au nombre de 1 à 4, suivi d'une lettre optionnel. Enfin une autre serie de chiffre optionnel au format monétique suivi d'un symbole "€", elle aussi optionnel.

Quelques exemples concrets :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
#123
LOT123
LOT  123
#123A
LOT   123     A
LOT   123   A    4.000.000    €
#      123   A    €    4.000.000
Si l'un de ces format de chaine est détecter, je dois extraire le N° de LOT avec la lettre si elle existe (123A pour l'exemple)

J'ai du le faire dans un premier temps sous linux ou, avec de l'aide, je suis arrivé à ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
res="LOT 123a 4.000€"
res1=$(echo $res | sed -r 's/((#|lot|Lot|LOT|LQT)?(\s|\s+)?([0-9]{1,3})[\s|\s+]?([a-zA-Z]?))((€|EUR|EURO)?(\s|\s+)?([0-9\.]+).*)?/\4\5|\9/;s/\.//g' | tr [a-z] [A-Z])
L'option -r n'existant pas sous Mac (d'après ce que j'ai lu) j'ai remplacé par -E. Mais j'obtiens des résultats totalement incohérent...
J'ai bien conscience que ma ligne n'est pas hyper optimisé, mais il faut bien garder à l'esprit que la chaine d'où je dois extraire le N° de lot doit absolument avoir une composition strict, histoire de ne pas extraire n'importe quel chiffres...

J'ai donc besoin d'aide...

Par avance merci