RegEx pour traiter messsages « SEPA »

Discussions sur la création de règles dans iCompta et notamment l'élaboration d'expressions régulières
jaladuvar
Messages : 180
Inscription : 19 février 2011, 08:35

RegEx pour traiter messsages « SEPA »

Message par jaladuvar »

Ma banque me communique les prélèvements ou les virements SEPA dans le nom de la transaction qui se présente sous une forme du type
PRELEVEMENT EUROPEEN 3430661916 POUR CPTE DE:CASTOSOF ID: FR86114495878 MOTIF: PRELEVEMENT SEPA 51482375200
Quand tous les messages sont « conformes » la regex suivante me permet d’isoler
Le payeur ou le débiteur, (suit DE:)
L’identité du payeur/débiteur (suit ID:)
Le message (suit MOTIF:). Des fois il y une partie REF:
.*\s*(?: DE:(.*))(?: ID:(.*))(?: MOTIF:(.*))
Malheureusement les différentes parties. DE: ID: MOTIF: ne sont pas toujours présentes et dans ce cas là, la regex ne fonctionne pas.
J’ai essayé de rendre (par exemple) DE: optionnel en changeant par
.*\s*(?: DE:(.*)){0,1}(?: ID:(.*))(?: MOTIF:(.*))
mais cela ne marche pas.


Merci par avance pour une piste....
jaladuvar

MacBook Pro (13-inch, 2018, Four Thunderbolt 3 Ports) 2,7 GHz - Intel Core i7 - 16 Go
Sonoma 14.0
Avatar de l’utilisateur
Angeman
Administrateur
Messages : 12436
Inscription : 28 décembre 2008, 21:28
Localisation : Toulouse, France
Contact :

Re: RegEx pour traiter messsages « SEPA »

Message par Angeman »

Essayez ça :

Code : Tout sélectionner

.*(?: DE:(.*))?(?: ID:(.*))?(?: MOTIF:(.*))?
jaladuvar
Messages : 180
Inscription : 19 février 2011, 08:35

Re: RegEx pour traiter messsages « SEPA »

Message par jaladuvar »

Cela ne marche pas (voir copie d'écran de regex01)

lien vers regex de test

https://regex101.com/r/Nqo755/2

Image

Je joins quelques lignes de test

Code : Tout sélectionner

PRELEVEMENT EUROPEEN 3001474924 DE: ONEY BANQUE ACCORD-ONEY BANK ID: FR56CLT157791 MOTIF: GC=01820034594*GC=01820034594 
VIR RECU    9192770469S DE: Humanis  Retraite Agirc MOTIF: RETRAITE COMPLEMENTAIRE AGIRC HUMAN IS  RETRAITE AGIRC REF : 0000000000 
VIR RECU    9196804737S DE: Humanis Retraite Arrco MOTIF: RETRAITE COMPLEMENTAIRE ARRCO HUMAN IS RETRAITE ARRCO REF : 00000000000 
VIR RECU    9086457436S DE: CNP Assurances 83 MOTIF: 12 00268863 REF: 12/00268863 
VIR RECU    0485970259S DE: CPAM VAR MOTIF: 180930001235180930001235 REF: 180930001235 
PRELEVEMENT EUROPEEN 0309538286 DE: CANALSAT - Groupe CANAL PLUS ID: FR90ZZZ397351 MOTIF: PRLV CANAL Abonnement mensuel 
PRELEVEMENT EUROPEEN 0309538295 DE: Canal Plus ID: FR16ZZZ185574 MOTIF: PRLV CANAL+ Abonnement mensuel 
PRELEVEMENT EUROPEEN 0401871507 DE: TELERAMA ID: FR31ZZZ203637 MOTIF: TELERAMA    E0000238302 050117 
PRELEVEMENT EUROPEEN 0427145415 POUR CPTE DE:CASTOSOF ID: FR86114495878 MOTIF: PRELEVEMENT SEPA 51482375200 
PRELEVEMENT EUROPEEN 0517974281 DE: Free Telecom ID: FR83ZZZ459654 MOTIF: Free HautDebit 695074410 
PRELEVEMENT EUROPEEN 0425022541 DE: CFCA DEPANNAGE EXPRESS ID: FR05ZZZ516833 MOTIF: 0117 06468198 21304663 54558258 DEP 
RELEVEMENT EUROPEEN 2001427553 DE: MUTUELLE DE L'INDUSTRIE DU PETROLE ID: FR69MIP108863 MOTIF: Prelevement 42CXK 024 de MIP du 01/
PRELEVEMENT EUROPEEN 7603288450 DE: CECA NICE MATIN ID: FR13ZZZ664129 REF: 00000005290000004152A0591910001 
PRELEVEMENT MATMUT ROUEN
PRELEVEMENT EUROPEEN 1703960579 DE: Bip Go ID: FR98ZZZ607600 MOTIF: Bip Go/.FB0020850087-1-BIPANDGO/ADV 
VIR RECU    1883093782S DE: CPAM VAR MOTIF: 181070001617181070001617 REF: 181070001617 
PRELEVEMENT EUROPEEN 8013447058 DE: FREE MOBILE ID: FR07ZZZ591778 REF: fmpmt-565330921 
PRELEVEMENT EUROPEEN 7603288450 DE: CECA NICE MATIN ID: FR13ZZZ664129 REF: 00000005290000004152A0591910001 
VIR RECU    2385619854S DE: MUTUELLE DE L'INDUSTRIE DU PETROLE MOTIF: 6OWUB 000 - remboursement Sante MIP 
PRELEVEMENT EUROPEEN 5405318101 DE: Le Point ID: FR08PNT106372 MOTIF: PRELEVEMENT 
PRELEVEMENT EUROPEEN 8200558875 DE: Engie ID: FR03SYM002381 MOTIF: Mandat                       ++S004 
VIR RECU    9085103990S DE: XXXX RETRAITES SAS MOTIF: 12 00272274 REF: 314552400 
PRELEVEMENT EUROPEEN 2708139463 DE: URSSAF RHONE ALPES-CNCESU ID: FR55ZZZ143065 MOTIF: PRELEVEMENT CNCESU
VIR RECU    3089705203S DE: CPAM VAR MOTIF: 181170001119181170001119 REF: 181170001119 
Pièces jointes
Capture d’écran 2018-05-10 à 09.43.54.jpg
Capture d’écran 2018-05-10 à 09.43.54.jpg (117.73 Kio) Consulté 25791 fois
jaladuvar

MacBook Pro (13-inch, 2018, Four Thunderbolt 3 Ports) 2,7 GHz - Intel Core i7 - 16 Go
Sonoma 14.0
Avatar de l’utilisateur
Angeman
Administrateur
Messages : 12436
Inscription : 28 décembre 2008, 21:28
Localisation : Toulouse, France
Contact :

Re: RegEx pour traiter messsages « SEPA »

Message par Angeman »

C'est dans iCompta qu'il faut tester parce que sur votre site ce n'est pas le même "format" d'expressions régulières et donc il peut y avoir des nuances.
jaladuvar
Messages : 180
Inscription : 19 février 2011, 08:35

Re: RegEx pour traiter messsages « SEPA »

Message par jaladuvar »

Même dans iCompta cela ne fonctionnait pas, apparemment la syntaxe (...)? retournait toute la chaine suivante sans tenir compte des mots insérés (type MOTIF: etc..)
La seule regex que j'ai trouvée et testée dans plusieurs environnements: BBedit, le site regex101 et iCompta est la suivante

Code : Tout sélectionner

.* DE:(.*)(?:(?: ID: (.*))(?: MOTIF: (.*)))|(?:.* DE:(.*)(?: MOTIF: (.*))(?: REF\s{0,1}: (.*)))|(?:.* DE:(.*)(?: MOTIF: (.*)))|(?:.* DE:(.*)(?: REF: (.*)))|(?:.* DE:(.*)(?: ID: (.*))(?: REF: (.*)))
Elle est un peu complexe à exploiter car par exemple la récupération de l'émetteur (ce qui suit DE:) se fait par

$1$4$7$9$11

Ce serait plus pratique si la syntaxe ? fonctionnait
jaladuvar

MacBook Pro (13-inch, 2018, Four Thunderbolt 3 Ports) 2,7 GHz - Intel Core i7 - 16 Go
Sonoma 14.0
Répondre