Parcourir un fichier avec regex

Tech43 Messages postés 8 Date d'inscription mardi 7 juillet 2020 Statut Membre Dernière intervention 16 juillet 2020 - 7 juil. 2020 à 18:50
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 - 17 mars 2021 à 21:40
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 .

10 réponses

Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
7 juil. 2020 à 19:43
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
0
Tech43 Messages postés 8 Date d'inscription mardi 7 juillet 2020 Statut Membre Dernière intervention 16 juillet 2020
8 juil. 2020 à 11:22
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
0
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
8 juil. 2020 à 13:14
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
0
Tech43 Messages postés 8 Date d'inscription mardi 7 juillet 2020 Statut Membre Dernière intervention 16 juillet 2020
8 juil. 2020 à 14:12
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
8 juil. 2020 à 23:31
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
0
Tech43 Messages postés 8 Date d'inscription mardi 7 juillet 2020 Statut Membre Dernière intervention 16 juillet 2020
9 juil. 2020 à 16:55
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
0
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
9 juil. 2020 à 19:34
0
Tech43 Messages postés 8 Date d'inscription mardi 7 juillet 2020 Statut Membre Dernière intervention 16 juillet 2020
10 juil. 2020 à 23:31
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.
0
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
11 juil. 2020 à 00:33
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 »
0
regexFriend
17 mars 2021 à 00:36
Bonjour,

A mon avis, ça devrait t'aider :

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

Je pars du principe que :

1) Tout "bloc" commence par un A suivi d'un nombre en début d'une ligne
2) Seuls les premiers champs sont obligatoires

Bon courage pour la suite ..
0
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
17 mars 2021 à 21:40
Oui, c’est sûr que ça va l’aider 8 mois après, au cas ou si ma réponse de l’époque ne convenait pas.....
0
Rejoignez-nous