C# et expression régulière
Résolu
kenshin24
Messages postés
34
Date d'inscription
Statut
Membre
Dernière intervention
-
kenshin24 Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
kenshin24 Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je dois utiliser les expressions régulières pour trouver des patterns dans des chaînes de caractères.
Je dois trouver des expressions commes celle-ci : $(nom) Où "nom" peut prendre n'importe qu'elle forme, soit des lettres minuscules et majuscule ainsi que des chiffres. Mais je dois garder la forme avec le signe de dollars en avant avec les deux parenthèses.
Je dois utiliser C# pour ce faire.
Merci de votre aide!!!
Je dois utiliser les expressions régulières pour trouver des patterns dans des chaînes de caractères.
Je dois trouver des expressions commes celle-ci : $(nom) Où "nom" peut prendre n'importe qu'elle forme, soit des lettres minuscules et majuscule ainsi que des chiffres. Mais je dois garder la forme avec le signe de dollars en avant avec les deux parenthèses.
Je dois utiliser C# pour ce faire.
Merci de votre aide!!!
A voir également:
- C# et expression régulière
- Expression écrite cm1 cm2 télécharger gratuit - Télécharger - Éducatifs
- Microsoft expression encoder - Télécharger - Divers Utilitaires
- Avoir du ping expression ✓ - Forum jeux en ligne
- C quoi un ping? ✓ - Forum Réseau
- Expression de recherche - Guide
3 réponses
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(); } } }
@+
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!!!
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!!!