Regex particulière ? (newbie inside)

Regex particulière ? (newbie inside) - Perl - Programmation

Marsh Posté le 14-03-2007 à 20:31:25    

Bonjour, je doit adapter des expressions régulières pour pouvoir stocker des valeurs dans une base de données. Mais en regardant sur internet, et avec toute la volonté qu j'y met, je n'arrive pas a bien comprendre la complexité du truc ! surtout que je n'ai malheureusement pas beaucoup de temps à y consacrer (une démo dans les prochains jours  :sweat: ).
 
Alors je viens faire appel a votre aide : voila trois chaines en exemple, la première marche, la seconde j'ai essayé quelque chose, la troisième je n'y arrive pas :
 
Pour récupérer 0% et 0,00 :
# output: PING OK - Packet loss = 0%, RTA = 0.00 ms
/output: PING.*?(\d+)%.+?([.\d]+)\sms/
 
Pour récupérer 2 :
# output:Used: 2106 MB (2%) Free: 74202 MB (97%)
/output:Used.*?(\d+).*/
 
Pour récupérer 62 :
# output:Mem: 160 MB (62%) / 254 MB (37%) Paged Mem: 180 MB (28%) / 629 MB (71%)
/output:Mem:.*?\((\d+)\%\).*\/.*\(.* ...
 
Voila si vous avez une petite idée de comment pouvoir m'aider ou juste m'expliquer, toute aide est la bienvenue  ;)  
 

Reply

Marsh Posté le 14-03-2007 à 20:31:25   

Reply

Marsh Posté le 14-03-2007 à 21:17:20    

Deux liens très utiles :


En général, http://perldoc.perl.org contient tout ce qu'il est nécessaire de savoir sur le langage.
Un autre lien utile (mais hors-sujet ici), c'est celui de la bibliothèque des modules PERL, CPAN : http://search.cpan.org/

 

Et pour répondre à ta question, tu peux faire une boucle pour récupérer n pourcentages entre parenthèses, il te suffira de récupérer le nombre d'occurrences adéquat :

while ( m/\((\d+)%\)/g )
{
   print "$1\n";
}

 

(je n'ai pas testé mais ça devrait fonctionner... j'ai pris pour hypothèse que la ligne à tester était stockée dans $_)


Message édité par Elmoricq le 14-03-2007 à 21:20:58
Reply

Marsh Posté le 15-03-2007 à 22:29:26    

Voila j'ai fini par trouver :
 
# output:Used: 2106 MB (2%) Free: 74202 MB (97%)
/output:Used: (\d+) MB \((\d+)\%\)/
 
# output:Mem: 160 MB (62%) / 254 MB (37%) Paged Mem: 180 MB (28%) / 629 MB (71%)
/output:Mem: (\d+) MB \((\d+)\%\) /
 
(en gras les valeurs que je récupère).
 
Je sais pas si c'est optimisé, mais sa marche, et je m'en contente !  :D  
merci !

Reply

Marsh Posté le 15-03-2007 à 22:34:00    

Et tu as pensé à regarder la réponse que je t'ai donnée ? [:mullet]


Message édité par Elmoricq le 15-03-2007 à 22:34:07
Reply

Marsh Posté le 19-03-2007 à 10:52:43    

Oui oui, c'est grace a sa que j'ai pu comprendre certaines syntaxes, meme si l'anglais technique... beurk
encore merci ;)

Message cité 1 fois
Message édité par sebus--74 le 19-03-2007 à 10:54:12
Reply

Marsh Posté le 19-03-2007 à 11:16:42    

sebus--74 a écrit :

meme si l'anglais technique... beurk


change de métier.

Reply

Marsh Posté le 19-03-2007 à 22:28:46    

sa l'est pas encore ! lol

Reply

Marsh Posté le 20-03-2007 à 08:44:52    

sebus--74 a écrit :

sa l'est pas encore ! lol


euh non, pas lol du tout ... Taz a on ne peut plus raison, toutes les docs sont en anglais et c'est pas près de changer [:spamafote]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed