Bomb_JacK
Messages postés6Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention16 janvier 2006
-
16 janv. 2006 à 12:10
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 2018
-
17 janv. 2006 à 11:41
Bonjour,
Je suis tout beau tout nouveau dans ce forum, je viens de me mettre au C# pour développer une petite appli sur du PocketPC et la je bloque sur un regexp.
Je souhaite récupérer la valeur dune clé de registre puis appliquer dessus un regex pour récupérer une chaine de caractères:
Exemple : \HKEY_LOCAL_MACHINE\Software\Apps\Mon Programme
Jai juste besoin de récupérer la chaine de caractère Mon Programme
Mon morceau de code :
Regex myregex = new Regex(@"^\HKEY_LOCAL_MACHINE\Software\Apps\([\w]+)$");
String s = (string)registryKey.Name;
Match m = NameGPS.Match(s);
lblNameSoft.Text = m.Groups[1].Value;
Jai un joli message derreur:
Une exception non gérée du type "System.ArgumentException" s'est produite dans System.dll
Informations supplémentaires: analyse de "^\HKEY_LOCAL_MACHINE\Software\Apps\([\w]+)$" - Séquence d'échappement [file://H/ \\H] non reocnnue.
J'avais déjà essayé en doublant les \\ (mais en supprimant l'@ qui est sensé désespécialiser le \) mais ca ne marche pas plus...
Une petite aide est la bienvenue, merci à vous !
A voir également:
[C#] Probleme avec Regexp et acces base de registre
Bomb_JacK
Messages postés6Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention16 janvier 2006 16 janv. 2006 à 12:30
Arf je n'avais pas pensé à mettre l'@ ET doubler les \, oki merci, le message d'erreur a bien disparu (j'en ai profiter aussipour modifier ma regexp fausse).
Cependant, si je peux abuser de ta compétence: Je n'arrive toujours pas à récuperer (du moins à afficher) la chaine de caractères récupérée (le lblNameSoftGPS reste vide), comment puis-je faire ?
Bomb_JacK
Messages postés6Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention16 janvier 2006 16 janv. 2006 à 13:12
C'est ce que j'ai fait et ca ne marche pas :(
Regex NameGPS =
new Regex(@"^\\HKEY_LOCAL_MACHINE\\Software\Apps\\([\d\w\s])");
String s = (
string)registryKey.Name;
Match m = NameGPS.Match(s);
lblNameSoftGPS.text = m.Groups[1].Value;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Ce qu'il se passe: je m'attendais a avoir plusieurs MessageBox ou du moins une avec la chaine POI-Warner, et en fait, la condition if (m.Success) est bypassé car la valeur récupérée avec mon regexp est nulle (je ne sais pas si je suis très clair ans mon raisonnement).
Bomb_JacK
Messages postés6Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention16 janvier 2006 16 janv. 2006 à 17:22
Sebastien, euh pas plus .... :( en tout cas merci de ta patience et de tes réponses !
Entre temps, il y avait une erreur syntaxique (il manquait un \ dans ma chaine de caracteres) mais pas plus.
Pour debugguer, j'ai changer le code avec un exemple trouve sur le web:
Regex myRegex = new Regex(@"^LDAP://CN=([\d\w\s]+), CN=([\d\w\s]+), DC=([\d\w\s]+), DC=([\d\w\s]+)$");
Match m = myRegex.Match(@"LDAP://CN=moderateurs, CN=pharaonix, DC=com, DC=developpez");
if (m.Success)
{
MessageBox.Show(m.Groups[1].Value);
MessageBox.Show(m.Groups[2].Value);
MessageBox.Show(m.Groups[3].Value);
MessageBox.Show(m.Groups[4].Value);
}
Et bien sur, les valeurs s'affichent bien.
Des que je remplace la chaine LDAP://.... par ma chaine a moi, paf marche plus ! :(
Bomb_JacK
Messages postés6Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention16 janvier 2006 16 janv. 2006 à 17:59
J'ai trouvé ce qui cloche mais pas la solution: en fait c'est encore le caractère \:
Si j'en mets dans la chaine de caractères qui passent, ca buggue. Si je l'enlève, ca marche ...
Faut donc que je trouve un moyen pour "forcer" l'antislash dans ma chaine...