C# et expression régulière
Résolu/Fermé
kenshin24
Messages postés
34
Date d'inscription
jeudi 12 juillet 2007
Statut
Membre
Dernière intervention
26 octobre 2009
-
29 juin 2009 à 22:39
kenshin24 Messages postés 34 Date d'inscription jeudi 12 juillet 2007 Statut Membre Dernière intervention 26 octobre 2009 - 30 juin 2009 à 16:50
kenshin24 Messages postés 34 Date d'inscription jeudi 12 juillet 2007 Statut Membre Dernière intervention 26 octobre 2009 - 30 juin 2009 à 16:50
A voir également:
- C# et expression régulière
- Expression de recherche - Guide
- Expression encoder - Télécharger - Divers Utilitaires
- T'as du ping expression ✓ - Forum Réseau
- Modèle fiche expression de besoin excel - Forum Word
- Mettre en image expression ✓ - Forum Jeux vidéo
3 réponses
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
29 juin 2009 à 23:11
29 juin 2009 à 23:11
Salut,
un petit exemple qui peut t'aider:
@+
un petit exemple qui peut t'aider:
using System.Text.RegularExpressions; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Regex r = new Regex("^\\${1}\\({1}[a-zA-Z09]+\\){1}$"); string[] b = { "bonjour", "$(enrev", "$(bienvu)","$(" }; for (int i = 0; i < b.Length; i++) { if (r.IsMatch(b[i])) Console.WriteLine(b[i]+"gagner"); else Console.WriteLine(b[i]+"perdu"); } Console.ReadLine(); } } }
@+
kenshin24
Messages postés
34
Date d'inscription
jeudi 12 juillet 2007
Statut
Membre
Dernière intervention
26 octobre 2009
30 juin 2009 à 16:02
30 juin 2009 à 16:02
Wow cool!!
Deux petites choses. J'ai essayer et il ne prend pas en compte les chiffres. S'il y a un ou plusieurs chiffres entre les parenthèses, ça ne fonctionne pas. J'ai essayé de modifier en ajoutant un tirert entre le 0 et le 9 comme pour les lettres :
Regex r = new Regex("^\\${1}\\({1}[a-zA-Z0-9]+\\){1}$");
Mais ça ne change rien.
Autre élément, peut-être que je n'ai pas été assez descriptif. Je lis un fichier texte dans lequel est insérer des tokens comme décrit : $(nom). Je dois parcourir le fichier texte et remplacer toutes les occurances par une valeur prédéfinie.
Si je fais :
Regex r = new Regex("^\\${1}\\({1}[a-zA-Z09]+\\){1}$");
String ligneFichierTexte = "Bonjour, mon nom est $(nom)";
MatchCollection collections = r.Matches(ligneFichierTexte, 0); //Le 0 c'est le premier caractère à vérifier.
si je fais
Console.WriteLine(collections.Count);
Et ça me retourne 0.
J'ai réussis à faire quelque chose en faisant String.Split() et j'analyse chaque mot. Cela marche par contre.
Est-ce que je suis oubligé de faire le split ou il existe quelque chose pour analyser la ligne au complet.
Merci!!!
Deux petites choses. J'ai essayer et il ne prend pas en compte les chiffres. S'il y a un ou plusieurs chiffres entre les parenthèses, ça ne fonctionne pas. J'ai essayé de modifier en ajoutant un tirert entre le 0 et le 9 comme pour les lettres :
Regex r = new Regex("^\\${1}\\({1}[a-zA-Z0-9]+\\){1}$");
Mais ça ne change rien.
Autre élément, peut-être que je n'ai pas été assez descriptif. Je lis un fichier texte dans lequel est insérer des tokens comme décrit : $(nom). Je dois parcourir le fichier texte et remplacer toutes les occurances par une valeur prédéfinie.
Si je fais :
Regex r = new Regex("^\\${1}\\({1}[a-zA-Z09]+\\){1}$");
String ligneFichierTexte = "Bonjour, mon nom est $(nom)";
MatchCollection collections = r.Matches(ligneFichierTexte, 0); //Le 0 c'est le premier caractère à vérifier.
si je fais
Console.WriteLine(collections.Count);
Et ça me retourne 0.
J'ai réussis à faire quelque chose en faisant String.Split() et j'analyse chaque mot. Cela marche par contre.
Est-ce que je suis oubligé de faire le split ou il existe quelque chose pour analyser la ligne au complet.
Merci!!!
kenshin24
Messages postés
34
Date d'inscription
jeudi 12 juillet 2007
Statut
Membre
Dernière intervention
26 octobre 2009
30 juin 2009 à 16:50
30 juin 2009 à 16:50
En parlant avec du monde avec qui je travaille, j'ai découvert mon problème.
Voici le RegHex qui marche :
Regex tokenFinder = new Regex("\\${1}\\({1}[a-zA-Z0-9\\-_\\.]+\\){1}");
J'ai supprimé le ^ au début et le $ à la fin. Bref, ça limitait la chaîne à avoir seulement ce que je voulais chercher. J'ai aussi ajouter le 0-9 (il fallait le tiret) ainsi que la possibilité d'avoir les caractères -, _ et . à l'intérieur du token.
Bref, tout marche!
Merci beaucoup!!!
Voici le RegHex qui marche :
Regex tokenFinder = new Regex("\\${1}\\({1}[a-zA-Z0-9\\-_\\.]+\\){1}");
J'ai supprimé le ^ au début et le $ à la fin. Bref, ça limitait la chaîne à avoir seulement ce que je voulais chercher. J'ai aussi ajouter le 0-9 (il fallait le tiret) ainsi que la possibilité d'avoir les caractères -, _ et . à l'intérieur du token.
Bref, tout marche!
Merci beaucoup!!!