Salut tous le monde,
je rencontre un petit souci pour extraire des donnees d'une expression reguliere. La voici :
([0-9]{9})\s*(E[0-9]+.*?)-((.*?)-([0-9]+.[0-9]{1,2})|.*)
Cette expression me permet d'extraire les informations sur ce genre de phrase :
700012839 E703 -DOMAINE PREST NON OUVERT PAR L AMC
000001708 E0480 0051- NUAT. (DRE) 0.00-0.00
000279001 E0317 0511 - INCOMPATIBILITE ASU-NAT / REGIME 0.00-1.00
Le premier groupe me recupere les 9 premiers caracteres numeriques.
Le second groupe, le code a partir de E jusqu'au trait -
Le troisieme groupe utilise l'operateur OR : ((.*?)-([0-9]+.[0-9]{1,2})|.*)
Mon souci est que je ne veux recuperer soit le groupe (.*?) que j'appelerai groupe A ET ([0-9]+.[0-9]{1,2}, groupe B, OU uniquement .*, groupe C
or la les parentheses externes me renvoi un groupe comprenant le groupe A et le groupe B ensemble. (en plus des groupes A et B separés)
A titre d'exemple pour etre claire.
Input : 000001708 E0480 0051-NUAT. (DRE) 0.00-0.00
je recupere :
groupe 1 = 000001708
groupe 2 = E0480 0051
groupe 3 = NUAT. (DRE) 0.00-0.00
groupe 4 = NUAT. (DRE) 0.00
groupe 5 = 0.00
Mon but est de ne pas recuperer le groupe 3 qui reprend enfaite le groupe 4 et 5 ensemble.
j'espere avoir ete claire.
PS : je debute en regex donc mon expression n'est surement pas la meilleure.
merci
Partager