[R] Regex - énumérer les variables d'un array

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 - énumérer les variables d'un array

#1

Message par JulienBoul »

#include<Array.au3>
#include"File.au3"

$Var1 = _FileListToArray (@scriptdir&"\download", "*_ListePieces.pdf", 1, 0)
_ArrayDisplay($Var1, "Liste fichier")  ; Ceci est facultatif, c'est juste pour afficher la liste des fichiers du dossier

For $i = 0 To UBound($Var1) - 1
   Msgbox ("","",$Var1[$i+1])
   $string = stringregexp ($Var1[$i+1],"(?m)^\d{1,}[^_]")
   Msgbox("","",$string)
Next
Bonjour,
J'ai un dossier comme celui ci:
Capture2.JPG
Capture2.JPG (14 Kio) Vu 1274 fois
et je souhaite énumérer mes variables de la ligne 1 à n (sans prendre la ligne 0) afin d'executer un script sur chaque élément constituant de mon dossier (liste de pièces uniquement) et en ne conservant que ce qui est avant le "_".
Capture.JPG
Capture.JPG (22.15 Kio) Vu 1274 fois
J'arrive a faire mon tableau, mais je n'arrive pas a isoler mon code technique avec une regex. Je dois pas être loin mais mon bout de code marche pas... pouvez vous m'aider?

Merccciiiii :)
Modifié en dernier par JulienBoul le jeu. 24 nov. 2016 16:33, modifié 1 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 - énumérer les variables d'un array

#2

Message par orax »

(;¬_¬) ^[^_]+

Cherche en début de chaîne, un caractère qui n'est pas « _ », 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 - énumérer les variables d'un array

#3

Message par JulienBoul »

Orax mon sauveur ^^

Merci.
^[^_]+
est identique a
(?m)^\d{1,}[^_]
(sur le résultat du moins), et je conserve ta méthode, mille fois plus simple... C'est l'ennui lorsqu'on cherche à taton sur un simulateur, on arrive vite à des couches superposées inutiles... je finirais par domestiquer les regex, j'y travaille.

Ce qui me contrarie, c'est que mon second msgbox, celui censé me donner uniquement "854298729820" par exemple, ben il me retourne "1"... J'me demande s'il n'essaie pas de lire mon tableau sur le mauvais axe...

Tu peux m'aider à ce sujet? pour le test, il suffit de renommer un quelconque fichier pdf de la façon "854249729820_ListePieces.pdf" par exemple.

Cdt, Julien.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Regex - énumérer les variables d'un array

#4

Message par jguinch »

Il faut voir du côté du paramètre Flag : par défaut, s'il n'est pas spécifié, le paramètre est 0 : retourne 1 si ça match ou 0 sinon.
Il faut donc soit utiliser la paramètre 1 (ou 3) : la valeur retournée sera un tableau.
$aString = stringregexp ($Var1[$i+1],"^[^_]+", 1)
MsgBox(0, "", $aString[0])
Sinon, tu peux utiliser StringRegExpReplace :
$string = stringregexpreplace ($Var1[$i+1],"_.+", "")
MsgBox(0, "", $string)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
JulienBoul
Niveau 4
Niveau 4
Messages : 82
Enregistré le : ven. 04 déc. 2015 13:55
Status : Hors ligne

Re: [..] Regex - énumérer les variables d'un array

#5

Message par JulienBoul »

Ouep, les deux solutions fonctionnent, à noter que dans ton second code, il faut bien noter
$string = StringRegExpReplace ($Var1[$i+1],"_.+", "")
MsgBox(0, "", $string)
Super, je continue mon script, c'est top de savoir qu'y'a toujours un filet lorsqu'on débute l'équilibrisme...

@+ Julien.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] Regex - énumérer les variables d'un array

#6

Message par jguinch »

oups, désolé. j'ai corrigé.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Répondre