Regexp: optimiser un parser

Résolu
Signaler
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
-
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
-
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

Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
65
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)
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
5
Erf jme doutais bien qu'il y avait un truc du genre j'avais essayé

(match = monRegexp2.Match(ligne)) != null ... Merci SharpMao !