Voici une expression qui fait une partie du travail :
(?<ShortInvoiceId>^[0-9\.]*)(?<ClientId>.*?) (?<InvoiceDate>[0-9]{6})(?<Client>.*) (?<LongInvoiceId>F20[[0-9\.]*)
Elle extrait (avec des groupes nommés) :
- Le numéro de facture court (des nombres et des points avant un espace)
- L'id du client (tout ce qui suit avant un espace)
- La date (6 caractères numériques)
- Le nom du client (tout ce qui est avant le numéro long)
- Le numéro de facture long (des chiffres et des points sans espaces)
Pour le reste tu peux t'inspirer de ce qui est déjà fait pour extraire les autres champs.
Edit : Comme c'est ton jour de chance, voici une expression salade-tomate-oignon (cad 'avec tout') :
(?<ShortInvoiceId>^[\d\.]*)(?<ClientId>.*?) (?<InvoiceDate>\d{6})(?<Client>.*) (?<LongInvoiceId>F20[\d\.]*) (?<NumberOne>[\d\.]*) (?<NumberTwo>[\d\.]*) (?<NumberThree>[\d\.]*)
![:king:](https://www.developpez.net/forums/images/smilies/king.gif)
REDIT : Il y avait un problème dans la séparation entre le numéro de facture court et le numéro client :
(?<ShortInvoiceId>^\d{4}\.\d{3})(?<ClientId>.*?) (?<InvoiceDate>\d{6})(?<Client>.*) (?<LongInvoiceId>F20[\d\.]*) (?<NumberOne>[\d\.]*) (?<NumberTwo>[\d\.]*) (?<NumberThree>[\d\.]*)
Partager