Expression régulière

titecoco -  
 TiteCoCo -
Bonjour, voilà je programme en C# poru une appli en dot net.
J'essaye d'utiliser les expressions régulières pour récupérer la chine de caractère qui se trouvent entre deux balises de mon cru.
Un exemple sera plus parlant:

List blabla texte à récupérertataitatatta EndList

voilà j'essaye de ne récupérer que le texte qui est entre mes 2 balises "List" et "EndList" en utilisant l'expression régulière suivante :

^(?<List>\w+)List(?<value>\w+)List(?<EndList>\w+)

grace au code suivant:

Regex r = new Regex(@"(?<List>\w+)List(?<value>\w+)", RegexOptions.IgnoreCase);
Match m = r.Match(MergedMail);
string sListe = m.Groups["List"].Value;
string sContenu = m.Groups["value"].Value;

c'est donc dans ma variable Contenue que devrait se trouver ce que je veux récupérer.

mais ca ne fonctionne pas, il ne me trouve pas de correspondance, donc ne me récuppère rien, la variable m reste vide....

quelqu'un saurait il comment faire pour récupérer le texte entre deux balises quelques qu'elle soient?
Je precise que normalement mes balises seront entourée de **Liste**,mais pour faire simple j'ai momentanément enlevé les "**"
A voir également:

2 réponses

Zep3k!GnO Messages postés 2049 Statut Membre 200
 
en Unix ca donnerait :
mon_exp="**Liste**([^*]+)**EndList**";


en comptant sur le faite que ce que tu récupère ne dois pas contenir d'*

Voilà, après ca reste a tester et p'tet a transcrire pour ton soft car je ne sais pas quel format d'expressions cela prend...

Bon courage.

Zep3k!GnO
0
TiteCoCo
 
Merci pour ta réponse, mais ça ne marchera pas, parce que malheureusement, le code à récupérer contient de "*"...et oui évidement.
Mais j'ai réussi à construire mon expresion finalement. Je mets le bout de code correspondant, si ça peu aider quelqu'un:

string sListeBalise = @"\*\*List\*\*";

Regex r = new Regex(@"(?<List>.*)"+sListeBalise+"(?<value>(.|\n)*)"+sListeBalise+"(?<EndList>(.|\n)*)", RegexOptions.IgnoreCase);

bool bOk = r.IsMatch(MergedMail);
Match m = r.Match(MergedMail);
string sListe = m.Groups["List"].Value;
string sContenu = m.Groups["value"].Value;
string sEndList = m.Groups["EndList"].Value;

et je récupère ce qui est contenu dans mes balises dans la variable sContenu.
Dans la variable sListe se trouve ce qu'il y a avant ma premiere balise et ce qui se trouve dans la variable sEndList coontient le text qui se trouve après ma dernière balise.
0