Récupérer certaines informations depuis un fichier .txt

Résolu
wakachi - Modifié le 22 mai 2020 à 11:57
Whismeril
Messages postés
17327
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
- 22 mai 2020 à 13:54
Bonjour tout le monde,

Je suis entrain de développer une application qui récupère le code source de l'application depuis la base SQL sous forme d'un fichier .txt.

Le code source est C#.

Je veux récupérer d'une façon dynamique des informations depuis le fichier .txt:

Exemple de contenu du fichier :

private static readonly TextConstant Text001 = new TextConstant(new int[]{01, 02}, new string[]{"C'est la première "01" ligne ", "Test02"})

private static readonly TextConstant Text002 = new TextConstant(new int[]{01, 02, 03}, new string[]{"Test01", "Test02", "C'est la {3} ligne"})


Je veux récupérer les informations suivantes de chaque ligne:
Ligne 1:

01
02
C'est la première "01
Test02

Ligne 2:

01
02
03
Test01
Test02
C'est la {3} ligne

Merci.

7 réponses

Whismeril
Messages postés
17327
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
596
22 mai 2020 à 11:56
J'ai pu trouvé un peu de temps.
Cette regex
(?<=new int\[]{)(?<index1>\d\d)(?:\, (?<indexSuite>\d\d))+}\, new string\[]{"(?<mot1>.+?)(?:", "(?<motSuite>.+?))+"}

fait ce que j'ai compris de ta demande, c'est à dire
  • Au moins 2 index
  • Au moins 3 "mots"


Exemple avec le lien ci dessous
http://regexstorm.net/tester?p=%28%3f%3c%3dnew+int%5c%5b%5d%7b%29%28%3f%3cindex1%3e%5cd%5cd%29%28%3f%3a%5c%2c+%28%3f%3cindexSuite%3e%5cd%5cd%29%29%2b%7d%5c%2c+new+string%5c%5b%5d%7b%22%28%3f%3cmot1%3e.%2b%3f%29%28%3f%3a%22%2c+%22%28%3f%3cmotSuite%3e.%2b%3f%29%29%2b%22%7d&i=private+static+readonly+TextConstant+Text001+%3d+new+TextConstant%28new+int%5b%5d%7b01%2c+02%7d%2c+new+string%5b%5d%7b%22C%27est+la+premi%c3%a8re+%2201%22+ligne+%22%2c+%22Test02%22%7d%29%0d%0a%0d%0aprivate+static+readonly+TextConstant+Text002+%3d+new+TextConstant%28new+int%5b%5d%7b01%2c+02%2c+03%7d%2c+new+string%5b%5d%7b%22Test01%22%2c+%22Test02%22%2c+%22C%27est+la+%7b3%7d+ligne%22%7d%29


Comme précédemment, pour voir le résultat, il faut afficher l'onglet "Table" et dérouler les sous captures pour la 2eme ligne.
Cette fois j'ai donné des noms aux groupes c'est plus simple par la suite.


Si tu ne sais pas ce qu'est une regex ou comment s'en servir en C# https://lgmorand.developpez.com/dotnet/regex/
Et regexstorm est un site de test ou de démonstration qui utilise le moteur de regex .Net, il y a quelques différences d'implémentation d'un langage à l'autre.
Par exemple, les noms de groupes ne marchent pas en VBA ou sur des vieilles versions de Java.
1
Whismeril
Messages postés
17327
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
596
22 mai 2020 à 12:52
Alors, quand je prends le temps de répondre, en 2 fois qui plus est, j'essaye de faire ce qui est démandé.

Donc ma 2eme réponse fait exactement ce que tu demandes.
A toi de faire l'effort de copier coller le lien que je t'ai donné et cliquer sur l'onglet "Table" comme je l'ai écrit.
1
kiltomadara
Messages postés
6
Date d'inscription
lundi 7 mai 2012
Statut
Membre
Dernière intervention
22 mai 2020

22 mai 2020 à 12:56
Oui oui, je me suis inspiré de votre réponse qui m'a énormément aidé.
Juste j'arrive pas à récupérer les informations de la table.

Je suis novice avec les RegEx... j'essaye d'apprendre et de mieux comprendre comment ça fonctionne...
0
Whismeril
Messages postés
17327
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
596 > kiltomadara
Messages postés
6
Date d'inscription
lundi 7 mai 2012
Statut
Membre
Dernière intervention
22 mai 2020

22 mai 2020 à 12:58
0
Whismeril
Messages postés
17327
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
596
22 mai 2020 à 09:14
Bonjour

avec une ou des regex, je n'ai pas trop le temps ce matin, mais dans le lien ci-dessous tu trouveras un exemple qui capture les index dans des groupes
http://regexstorm.net/tester?p=%28%3f%3c%3dnew+int%5c%5b%5c%5d%5c%7b%29%28%5cd%5cd%29%28%5c%2c+%28%5cd%5cd%29%29%2b&i=private+static+readonly+TextConstant+Text001+%3d+new+TextConstant%28new+int%5b%5d%7b01%2c+02%7d%2c+new+string%5b%5d%7b%22C%27est+la+premi%c3%a8re+%2201%22+ligne+%22%2c+%22Test02%22%7d%29%0d%0a%0d%0aprivate+static+readonly+TextConstant+Text002+%3d+new+TextConstant%28new+int%5b%5d%7b01%2c+02%2c+03%7d%2c+new+string%5b%5d%7b%22Test01%22%2c+%22Test02%22%2c+%22C%27est+la+%7b3%7d+ligne%22%7d%29


Je te mets, une capture, avec l'onglet "Table" affiché et les "sous captures" développées

0
kiltomadara
Messages postés
6
Date d'inscription
lundi 7 mai 2012
Statut
Membre
Dernière intervention
22 mai 2020

22 mai 2020 à 12:46
Merci beaucoup pour votre réponse



Ici le résultat attendu est de récupérer seulement les informations suivantes :
- 01, 02
- 01, 02, 03



Ici le résultat attendu est de récupérer seulement les informations suivantes :
-C'est la première "01" ligne
-Test02

-Test01
-Test02
-C'est la {3} ligne
0

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

Posez votre question
kiltomadara
Messages postés
6
Date d'inscription
lundi 7 mai 2012
Statut
Membre
Dernière intervention
22 mai 2020

22 mai 2020 à 12:52


Votre RegEx répond à 90% de mon besoin.
Par exemple dans cette exemple il manque l'information (de la 2eme ligne) :
02 du groupe int[]
Test02 du groupe string[]
0
Whismeril
Messages postés
17327
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
596
Modifié le 22 mai 2020 à 12:55
Nos réponses ce sont croisées donc je précise, enfin je répète
Et regexstorm est un site de test ou de démonstration qui utilise le moteur de regex .Net, il y a quelques différences d'implémentation d'un langage à l'autre.

=> regex101 n'utilise pas le moteur .Net

Et
Comme précédemment, pour voir le résultat, il faut afficher l'onglet "Table" et dérouler les sous captures pour la 2eme ligne.
0
kiltomadara
Messages postés
6
Date d'inscription
lundi 7 mai 2012
Statut
Membre
Dernière intervention
22 mai 2020

22 mai 2020 à 13:04
Encore merci beaucoup pour votre aide précieuse.
Je vais essayer d’implanter le code sous .Net et de dérouler les sous-captures d'une manière dynamique pour récupérer les informations dont j'ai besoin comme vous me l'avez suggéré.

Merci encore
0
Whismeril
Messages postés
17327
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
596
22 mai 2020 à 13:07
0
kiltomadara
Messages postés
6
Date d'inscription
lundi 7 mai 2012
Statut
Membre
Dernière intervention
22 mai 2020
> Whismeril
Messages postés
17327
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
16 mai 2022

22 mai 2020 à 13:46
Merci.
0
Whismeril
Messages postés
17327
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
596
22 mai 2020 à 13:54
De rien
0