Regexp: optimiser un parser

Résolu
bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 - 3 avril 2008 à 19:29
bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 - 3 avril 2008 à 20:53
Bonjour, j'écris un parser de log et l'algorithme a cette forme:

if(monRegexp1.IsMatch(ligne))
{
    Match match = monRegexp1.match(line);
    //traitement quelquonque
}
else if(monRegexp1.IsMatch(ligne))
{
    Match match = monRegexp2.match(line);

    //traitement quelquonque
}
etc. etc.

Le problème, c'est qu'à chaque passe, un regexp est exécuté 2 fois. Est-il possible de faire du "2 en 1" ? Les regexp étant couteux et mes logs volumineux, chaque seconde de gagnée dans le traitement me serait utile...

Merci!

2 réponses

SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
3 avril 2008 à 20:39
Hello,

Tu peux essayer comme ça, ça devrait marcher :

if ((match = monRegexp1.Match(ligne)).Success)
{
//traitement quelquonque
}
elseif
((match = monRegexp2.Match(ligne)).Success)
{
//traitement quelquonque
}

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
3
bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 4
3 avril 2008 à 20:53
Erf jme doutais bien qu'il y avait un truc du genre j'avais essayé

(match = monRegexp2.Match(ligne)) != null ... Merci SharpMao !
0
Rejoignez-nous