bonjour,
Est ce que je peux extraire les groupes existant dans une chaine à partir d'un expression régulière suivant la forme suivant \1 \2 \3 pour extraire les goupes 1, 2 et 3 par exemple ??
toute aide est la bienvenue :)
Version imprimable
bonjour,
Est ce que je peux extraire les groupes existant dans une chaine à partir d'un expression régulière suivant la forme suivant \1 \2 \3 pour extraire les goupes 1, 2 et 3 par exemple ??
toute aide est la bienvenue :)
Ce code peut te donner les groupes, si t'as un espace entre groupe met un \s voir un \s* si il y a plusieurs espaces.Citation:
Dim collection As MatchCollection = Regex.Matches("\groupe1 \groupe2", "\* \* ", RegexOptions.IgnoreCase)
Apres tu dois enlever le \ si tu veux que le nom.
Un peu de code pourrait faciliter la compréhension de la question.
Que souhaites-tu faire exactement?
@Quatre Couleurs : en fait il n'ya pas de Matches() qui prends 3 arguments
@roster : en fait ce que je veux exactement c'est lorsque j'ai une expression régulière par exemple :
et une chaine comme suitCode:
1
2 [0-9]([a-z]+)[0-9]([a-z]+)([0-9]+)
123azerty456qwerty789
je donne au programme l'expression régulière "\1 \3" par exemple le programme me rend les groupes 1 et 2 c'est à dire : azrty et 789
Elle doit bien exister puisque je l'utilise cette fonction (http://msdn.microsoft.com/en-us/library/b49yw9s8.aspx). En plus une fois que tu as la collection il te suffit de faire un for each pour extraire ce que tu veux...:roll:
oui c'est bizarre car lorsque je l'utilise mon éditeur ne la reconnaît pas !!:(
Tu peux envisager quelque chose comme ça
Et à l'utilisationCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public string[] GetGroupsFromRegex(params int[] groupNumbers) { string[] array = null; Match match = Regex.Match("123azerty456qwerty789", "^[0-9]+([a-z]+)[0-9]+([a-z]+)([0-9]+)$"); if (match.Groups.Count > 0) { int index = 0; array = new string[groupNumbers.Length]; foreach (int i in groupNumbers) { array[index++] = match.Groups[i].Value; } } return array; }
Code:string[] groups = GetGroupsFromRegex(1, 3);
Merci bien StormimOn, mais ça je sais sauf que moi je vaux que donne à mon programme la 'expression régulière suivant "\1\2" pour qu'il me donne par exemple le groupe 1 et 2 de ma chaine concaténés, est ce possible ??
\1, \2, ... c'est ce que l'on appelle backreference dans les expressions régulières. Utilisées seules cela ne sert absolument à rien. Donc non tu ne peux pas utiliser ceci pour extraire les groupes.
Si tu veux extraire certains groupes tu dois passer par le code (propriété Match.Groups).
ok merci bien :)