Bonjour à tous,
J'aimerais parser des fichiers texte pour récupérer des informations dans leur entetes.
Voici mes fonctions de recherche des valeurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 /* =========================================================================*/ /* Date de création : 28/08/2013 */ /* Réalisateur : Eric Bryan */ /* But procédure : Récupération des factures*/ /* : 22 line description 2*/ /* Ligne description 3 */ /* -------------------------------------------------------------------------*/ /* */ /* =========================================================================*/ /* Date de modification : 28/08/2013 */ /* Réalisateur : Eric Bryan */ /* But modification : Modification 1 */ /* : Modification 2 */ /* Modification 3 */ /* : Modification 4 */ /* =========================================================================*/ /* Paramètres de la procédure -----------------------------------------*/
Et voici mon appel, pour rechercher la date (28/08/2013) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 //(J'aimerais que cette méthode reste générique en précisant l'index de match et l'index de group.) public static string RegexGroupByIndex(string input, string pattern, int index, int indexGroup) { Regex regex = new Regex(pattern, Options); MatchCollection matches = Regex.Matches(input, pattern); string sReturned = null; if (index < matches.Count) { if (indexGroup <= matches[index].Groups.Count) { sReturned = matches[index].Groups[indexGroup].Value; } } return sReturned; } public static string RegexGroup(string input, string pattern, string name) { Regex regex = new Regex(pattern, Options); Match match = regex.Match(input); return match.Success ? match.Groups[name].Value : null; }
Et voici mon appel, pour rechercher toutes les lignes concernant le "but de la procédure" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 string sPattern = @"\/\*\s*(?i)date\s*[de]*\s*[la]*cr[e|é|è|ë|ê]ation\s*[\:]*\s*(?<Date_Creation>.*?\s*\*\/"; string sResult = Sql_RegEx_Udf.RegexGroup(sProcContent, sPattern, "Date_Creation"); Console.WriteLine(sResult);
J'aimerais obtenir :
"
Récupération des factures
22 line description 2
Ligne description 3
"
Puis la récupération des buts de modification :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 sPattern = @"\/\*\s*(?i)but\s*[de]*\s*[la]*proc[e|é|è|ë|ê]dure\s*[\:]*\s*(?<But_procedure>.*?\s*\*\/(\r*\n*\/\*\s*\:\s*.*?\s*\*\/)*)\r\n\/\*\s\=*\s*\*\/"; sResult = Sql_RegEx_Udf.RegexGroup(sProcContent, sPattern, "But_procedure"); Console.WriteLine(sResult);
J'aimerais obtenir :
"
Modification 1
Modification 2
Modification 3
Modification 4
"
Et cela ne marche pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 sPattern = @"\/\*\s*(?i)but\s*[de]*\s*[la]*modification\s*\:*\s*(.*?\s*\*\/(\r*\n*\/\*\s*\:\s*.*?\*\/)*)\r\n\/\*\s[\=|\-]*\s*\*\/"; string sResult_2 = Sql_RegEx_Udf.RegexGroupByIndex(sProcContent, sPattern, 0, 1); Console.WriteLine(sResult_2);
Merci beaucoup par avance pour vos réponses.
Eric.
Partager