Parcourir un fichier avec regex

Signaler
Messages postés
8
Date d'inscription
mardi 7 juillet 2020
Statut
Membre
Dernière intervention
16 juillet 2020
-
Messages postés
14555
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
31 juillet 2020
-
Bonjour,

j'ai fait une regx pour parcourir un fichier j'ai pris un example et il marche bien

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


dans le lien ci-joint mon regx traite :

A-0 et A-100.

je sais que je peux parcourir A-200 et A-300 en ajoutant d'autre ligne dans ma regx .

comment faire la modification nécessaire au regx pour faire un traitement sur plus de 200 lignes en un seul coup toute en évitant de faire une regx longue?

merci .

9 réponses

Messages postés
14555
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
31 juillet 2020
426
Bonsoir

peux tu détailler ton besoin, parce que là c'est pas clair du tout.

En soit une regex n'a pas vocation à parcourir un texte mais capturer un morceau de texte correspondant à un modèle.

Et puis traiter ça veut dire tout et n'importe quoi.

Voilà ce que je crois comprendre de ton exemple.
Tu veux extraire les valeurs sous les colonnes F1, F2 et F3.
Si c'est juste ça, y'a même pas besoin d'une regex.
Si c'est plus compliqué (et ta regex est un poil compliquée) faut expliquer le pourquoi du comment de chaque contrainte
Messages postés
8
Date d'inscription
mardi 7 juillet 2020
Statut
Membre
Dernière intervention
16 juillet 2020

salut :

merci beaucoup pour votre réponse .

oui je cherche à extraire les valeurs sous les colonnes F1,F2,F3.

j'ai vu un example dans le forum c'est pour cette raison j'ai commencer par la partie regx

https://codes-sources.commentcamarche.net/forum/affich-10024360-lire-un-fichier-texte-colonne-par-colonne 


Merci
Messages postés
14555
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
31 juillet 2020
426
Question y’a t il autre chose dans ton fichier que la ligne F1... et tes lignes de données?

Si oui, la regex est peut-être justifiée.
Si non, dans le fil dont tu parles. twinuts a répondu que pour un cas comme ça spliter la ligne sur les espaces et/ou les tabulation est plus simple, je suis d’accord avec
Messages postés
8
Date d'inscription
mardi 7 juillet 2020
Statut
Membre
Dernière intervention
16 juillet 2020

salut:

comme le montre l'example ci-dessous , on trouve dans la colonne F1 les ligne vide sont variables ( deux vide ou un seul vide ).


F1 F2 F3
A-0 FXX 10
vide FXX 11
vide FXX 12
A-100 FXY 10
vide FXY 11
vide FXY 12
A-200 FXZ 10
vide FXZ 11
A-300 FXZ 12



Merci
Messages postés
14555
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
31 juillet 2020
426
OK, effectivement la regex peut être utile.

Je pars du principe qu'il n'y a pas de ligne que tu cherches avant la ligne
F1             F2                F3

ça simplifie grandement les choses, si ça n'est pas le cas on modifiera.

Autre point qui a sont importance, selon les langages de programmations, les moteur de regex sont plus ou moins différents. Tu as choisis regex101 comme site de test avec le moteur PHP, donc je suis cette logique, mais si tu codes dans un autre langage, il faudra peut-être revoir des trucs
https://regex101.com/r/B72wkH/1
Messages postés
8
Date d'inscription
mardi 7 juillet 2020
Statut
Membre
Dernière intervention
16 juillet 2020

salut et merci pour votre réponse:

Est-ce que je peux récupérer tout les valeurs des sous colonnes : F2 et F3 quand la valeur sous la colonne F1 est vide aussi en utilisant expression régulière?


F1 F2 F3
A-0 FXX 10
FXX 11
FXX 12


merci
Messages postés
14555
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
31 juillet 2020
426
Messages postés
8
Date d'inscription
mardi 7 juillet 2020
Statut
Membre
Dernière intervention
16 juillet 2020

salut :

le lien que tu as envoyé affiche 4 matches il doit y avoir plus .

ci-dessous les matches qui manquent ( j'ai écrit manque dans les valeurs correspondantes).




F1 F2 F3
A-0 FXX 10
MANQUE MANQUE
MANQUE MANQUE
A-100 FXY 10
MANQUE MANQUE
MANQUE MANQUE
A-200 FXZ 10
MANQUE MANQUE
A-300 FXZ 12



2/ j'ai effectué un autre test mais j'ai obtenu un décalages ce n'est pas ce que je cherche

ci-dessous le lien:


https://regex101.com/r/B72wkH/3


merci beaucoup pour votre support habituel.
Messages postés
14555
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
31 juillet 2020
426
Alors, je suis sur ma tablette, sur regex101 je n’arrive pas à mettre à jour le lien.
Je te montre donc sur un autre site, qui utilise le moteur de regex .Net.
Cela dit le résultat sur regexstorm est conforme à ce que je crois comprendre de ton besoin. Cela dit sur regex 101 quand il y a plusieurs ligne « vides » seule la dernière capture est affichée.
Je ne sais pas si c’est une différence entre les moteurs PHP et .Net ou un soucis lié à mon iPad
http://regexstorm.net/tester?p=%28%3f%3cF1%3eA-%5cd%2b%29%5cs%2b%28%3f%3cF2%3eF%5bA-Z%5d%2b%29%5cs%2b%28%3f%3cF3%3e%5cd%2b%29%5cs%2b%28%28%3f%3cF4%3eF%5bA-Z%5d%2b%29%5cs%2b%28%3f%3cF5%3e%5cd%2b%29%5cs%2b%29*&i=%0d%0aF1+++++++++++++F2++++++++++++++++F3+%0d%0aA-0%09++++++FXX%09+++++++++++++10+%0d%0a%09++++++FXX%09+++++++++++++11+%0d%0a%09++++++FXX%09+++++++++++++12+%0d%0aA-100+++++++++FXY%09+++++++++++++10+%0d%0a%09++++++FXY%09+++++++++++++11+%0d%0a++++++++++FXY%09+++++++++++++12+%0d%0aA-200+++++++++FXZ%09+++++++++++++10+%0d%0a++++++++++FXZ%09+++++++++++++11+%0d%0aA-300+++++++++FXZ%09+++++++++++++12+++++++++++%0d%0a++++++++%0d%0a++++++++++++++++++++++++++++++++++++++%0d%0a++++++++++++++%0d%0a++++++++++++++++++++++++++++++++++++++%0d%0a

Pour voir le résultat il faut cliquer sur l’onglet « table »