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 :
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)
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
J'ai du le faire dans un premier temps sous linux ou, avec de l'aide, je suis arrivé à ceci :
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...
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])
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
Partager