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

Résolu
wakachi - Modifié le 22 mai 2020 à 11:57
Whismeril Messages postés 19102 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 25 juillet 2024 - 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 19102 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 25 juillet 2024 660
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 19102 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 25 juillet 2024 660
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 19102 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 25 juillet 2024 660 > 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 19102 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 25 juillet 2024 660
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 19102 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 25 juillet 2024 660
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 19102 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 25 juillet 2024 660
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 19102 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 25 juillet 2024
22 mai 2020 à 13:46
Merci.
0
Whismeril Messages postés 19102 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 25 juillet 2024 660
22 mai 2020 à 13:54
De rien
0
Rejoignez-nous