[R] regex - identifier n caractères dans le désordre

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
JulienBoul
Niveau 4
Niveau 4
Messages : 82
Enregistré le : ven. 04 déc. 2015 13:55
Status : Hors ligne

[R] regex - identifier n caractères dans le désordre

#1

Message par JulienBoul »

Bonjour,

Pouvez vous m'aider à isoler 3 variables? En tout cas j'suis content, j'ai presque réussi a isoler la fin de la ligne comme un grand :-P -->

Code : Tout sélectionner

(\.{1,}\s{1,}){1,}?0,00
Petite victoire, mais c'est la première en regex ^^

Par contre, il faut isoler les deux premières par un espace uniquement (elles ne sont pas toujours standard comme affichées, elle peuvent contenir alphanumérique, caractères spéciaux etc, mais jamais d'espace au sein d'une même variable).
La 3ème et dernière sera entre le second espace de la ligne et la chaine obtenue par

Code : Tout sélectionner

(\.{1,}\s{1,}){1,}?0,00
1000 481010582876 PORTE ASS. GR. . . . . . . . . . 0,00
1001 480120101448 CHARNIERE SCREW MINI2. . . . . . 0,00
1170 481949878366 AVM141-Poignée pour plat Crisp . 0,00
1300 480120101791 CAME PLATE. . . . . . . . . . . 0,00
1301 480120101451 LEVIER. . . . . . . . . . . . . 0,00
1302 480120101452 SUPPORT. . . . . . . . . . . . . 0,00
1303 481231038739 INTERRUPTEUR + INTERS . . . . . 0,00
1304 481231038743 PION PORTE. . . . . . . . . . . 0,00
2460 480120101453 PLAT CRISP SMALL. . . . . . . . 0,00
2550 481246678412 PLATEAU TOURN. TOURNANT 25 cm. . 0,00
2640 481010422369 PLATEAU TOURN. CERCHIO MIBI GR/. 0,00
2641 481946238767 RAIL PLAT TOURN. . . . . . . . . 0,00
3010 481010582875 DOSSERET C+ IXL GR Mini2. . . . 0,00
3320 480120100884 POUSSOIR C+1. . . . . . . . . . 0,00
3321 480120100885 POUSSOIR C+2. . . . . . . . . . 0,00
3322 480120100782 POUSSOIR HINGES. . . . . . . . . 0,00
3500 481010364177 AFFICHEUR APRÈS: 46/10. . . . . 0,00
4040 481213158813 MAGNETRON. . . . . . . . . . . . 0,00
4120 480120100336 TRANSFORMATEUR HT. . . . . . . . 0,00
4200 481212158159 CONDENSATEUR. . . . . . . . . . 0,00
4220 481236158419 MOTEUR TT. . . . . . . . . . . . 0,00
4260 481221838323 DIODE AT. . . . . . . . . . . . 0,00
4400 480120101953 MOTEUR. . . . . . . . . . . . . 0,00
4520 480120101407 ELEM. CHAUFFANT 350W 115V. . . . 0,00
4521 481225998463 ROTISSOIRE. . . . . . . . . . . 0,00
4522 480120101247 PROTECTION GRILL. . . . . . . . 0,00
4800 481068977341 LIMANDE AFFICHEUR - PLAT PUISS. 0,00
4900 480120101164 CORDON SECTEUR. . . . . . . . . 0,00
5000 481010577756 PLATINE CONTROLE FREJA2 ACU GR-. 0,00
5610 480120100531 THERMOSTAT 130C. . . . . . . . . 0,00
6330 480120101578 INTERRUPTEUR. . . . . . . . . . 0,00
6520 481213418008 LAMPE. . . . . . . . . . . . . . 0,00
D'autre part, je préfère en parler on ne sais jamais, mais peut on isoler les mêmes variables à partir du fichier txt suivant (ça serait super propre car j'arrive a convertir un fichier pdf en txt grace à du batch sur une seule ligne de commande).
J'ai laché l'affaire car je ne vois pas du tout comment différencier un ensemble de " ." ou ". ", l'un séparant deux variables (exemple: "CERCHIO MIBI GR/. RAIL PLAT TOURN"), l'autre séparant deux mots au sein d'une variable (exemple "PORTE ASS. GR").
Micro-ondes encastrable - 858792101741

11/11/2016


1000 1001 1170 1300 1301 1302 1303 1304 2460 2550 2640 2641 3010 3320 3321 3322 3500 4040 4120 4200 4220 4260 4400 4520 4521 4522 4800 4900 5000 5610 6330 6520

Référence
481010582876 480120101448 481949878366 480120101791 480120101451 480120101452 481231038739 481231038743 480120101453 481246678412 481010422369 481946238767 481010582875 480120100884 480120100885 480120100782 481010364177 481213158813 480120100336 481212158159 481236158419 481221838323 480120101953 480120101407 481225998463 480120101247 481068977341 480120101164 481010577756 480120100531 480120101578 481213418008

Description
PORTE ASS. GR. . . . . . . . . . CHARNIERE SCREW MINI2. . . . . . AVM141-Poignée pour plat Crisp . CAME PLATE. . . . . . . . . . . LEVIER. . . . . . . . . . . . . SUPPORT. . . . . . . . . . . . . INTERRUPTEUR + INTERS . . . . . PION PORTE. . . . . . . . . . . PLAT CRISP SMALL. . . . . . . . PLATEAU TOURN. TOURNANT 25 cm. . PLATEAU TOURN. CERCHIO MIBI GR/. RAIL PLAT TOURN. . . . . . . . . DOSSERET C+ IXL GR Mini2. . . . POUSSOIR C+1. . . . . . . . . . POUSSOIR C+2. . . . . . . . . . POUSSOIR HINGES. . . . . . . . . AFFICHEUR APRÈS: 46/10. . . . . MAGNETRON. . . . . . . . . . . . TRANSFORMATEUR HT. . . . . . . . CONDENSATEUR. . . . . . . . . . MOTEUR TT. . . . . . . . . . . . DIODE AT. . . . . . . . . . . . MOTEUR. . . . . . . . . . . . . ELEM. CHAUFFANT 350W 115V. . . . ROTISSOIRE. . . . . . . . . . . PROTECTION GRILL. . . . . . . . LIMANDE AFFICHEUR - PLAT PUISS. CORDON SECTEUR. . . . . . . . . PLATINE CONTROLE FREJA2 ACU GR-. THERMOSTAT 130C. . . . . . . . . INTERRUPTEUR. . . . . . . . . . LAMPE. . . . . . . . . . . . . .

Qté
0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00

Commentaire

XXX Micro-ondes encastrable - Whirlpool - Micro-ondes encastrable - 858792101741 - AMW921IXL

1/2

Micro-ondes encastrable - 858792101741

7740 7741 9220 9300

481244229206 481249148016 481953268686 481249268172

PLAQUE MICA DE CAVITE. . . . . . DOIGT INT.CAVITE. . . . . . . . BAGUE. . . . . . . . . . . . . . RESSORT TENSION LEVIER. . . . .

0,00 0,00 0,00 0,00

11/11/2016

XXX Micro-ondes encastrable - Whirlpool - Micro-ondes encastrable - 858792101741 - AMW921IXL

2/2
Du coup je pense que ca sera plus simple de travailler sur la première solution :-D
Merci à vous de l'aide !

Julien.
Modifié en dernier par JulienBoul le mar. 15 nov. 2016 09:09, modifié 2 fois.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] regex - identifier n caractères dans le désordre

#2

Message par orax »

(?m)^([^ ]+) ([^ ]+) (.+?)(?:\s*\.\s)+0,00$
https://regex101.com/r/lRKAtH/1

{1,} est équivalent à + (une fois ou plus).
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
JulienBoul
Niveau 4
Niveau 4
Messages : 82
Enregistré le : ven. 04 déc. 2015 13:55
Status : Hors ligne

Re: [..] regex - identifier n caractères dans le désordre

#3

Message par JulienBoul »

:D :D :D
Ralala, c'est trop bien, le soir, je poste mon petit soucis de la journée, en dormant je réfléchi a comment organiser mon code, et j'intégre la réponse du forum le matin, c'est trop cool :-P

Merci Orax, Bonne journée !
JulienBoul
Niveau 4
Niveau 4
Messages : 82
Enregistré le : ven. 04 déc. 2015 13:55
Status : Hors ligne

Re: [R] regex - identifier n caractères dans le désordre

#4

Message par JulienBoul »

Hello la compagnie,

https://regex101.com/r/BFSlnj/1

Pouvez vous m'aider, je suis dans le prolongement de ce qu'Orax avait préconisé, avec quelques modifications.
Mon problème est que mon "|" crée une seconde série de groupes, 4,5 et 6. Comment puis je faire pour qu'ils correspondent au groupes 1,2 et 3?
Heu, j'suis un peu vague non? Regardez l'exemple, vous comprendrez en voyant certaines lignes aux couleurs différentes (match 11, 17...)

Merci à ceux qui m'aideront, vous avez vu, je commence à manipuler moi même :-)
Bon, c'est pas le plus propre, mais ca commece à venir...

Bonne soirée et surement à demain.
Julien.

Edit: J'ai trouvé la solution en dormant ^^
https://regex101.com/r/BFSlnj/2
C'est vraiment formidable les regex...
Répondre