Récupérer certaines informations depuis un fichier .txt [Résolu]

Signaler
-
Messages postés
14874
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
30 mai 2020
-
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

Messages postés
14874
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
30 mai 2020
413
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.
Messages postés
14874
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
30 mai 2020
413
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.
Messages postés
6
Date d'inscription
lundi 7 mai 2012
Statut
Membre
Dernière intervention
22 mai 2020

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...
Messages postés
14874
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
30 mai 2020
413 >
Messages postés
6
Date d'inscription
lundi 7 mai 2012
Statut
Membre
Dernière intervention
22 mai 2020

Messages postés
14874
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
30 mai 2020
413
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

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

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
Messages postés
6
Date d'inscription
lundi 7 mai 2012
Statut
Membre
Dernière intervention
22 mai 2020



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[]
Messages postés
14874
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
30 mai 2020
413
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.
Messages postés
6
Date d'inscription
lundi 7 mai 2012
Statut
Membre
Dernière intervention
22 mai 2020

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
Messages postés
14874
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
30 mai 2020
413
Messages postés
6
Date d'inscription
lundi 7 mai 2012
Statut
Membre
Dernière intervention
22 mai 2020
>
Messages postés
14874
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
30 mai 2020

Merci.
Messages postés
14874
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
30 mai 2020
413
De rien