Extraire des informations d'un fichier

cs_samsih Messages postés 16 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 8 mai 2004 - 7 juil. 2003 à 12:49
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 - 30 juil. 2003 à 15:42
Bonjour,
je voudrai savoir comment extraire quelques informations de n'import quel fichier log avec formats differents , et les stockées dans une base de données.
exp de ligne de fichier:

05/17/2003 18:42:37 Allowed UDP Incoming 213.179.173.47 1022 193.194.64.11 53 C:\Programme files\............ 1 05/17/2003 18:47:33 05/17/2203 18:47:33 Ask all runnig apps

et un 2eme exp:
FWIN, 2003/04/28,14:27:30 +2:00 GMT,192.168.0.70:8080,192.168.0.8:1446,TCP (flags:S)
je voudrais extraire Date, Heure, IPsource, IPdest

j'ai pensais à une solution qui est de separer chaque lignes en entités, chaque entité est comprise entre deux blancs ou "," , je dois parcourir la ligne caractere par caractere et stoquer dans un tableau jusqu'a trouver un separateur
le brobleme qui se pose est comment comparer une entité Date avec un format Date( comment savoir que cette entité est une date).

merci

6 réponses

cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
7 juil. 2003 à 13:16
vas faloir tout tester, il y a pas d'autre moyen.
vérifier si la longeur est la même, si les "/" ou des "-" sont au bon endroit et si le restant sont des chiffre et pour finir, si le mois et le nombre de jours sont possbile. Pas d'autre moyen de vérifier

vas faloir faire pareil pour l'IP et pour les heures
0
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
7 juil. 2003 à 14:19
sinon depuis la 1.4, utilise les expressions régulières (aide : regex)
elles permettent de comparer dirrectement la syntaxe de ta chaîne

taChaine.matches(taRegexp)

par exemple pour une date ##/##/####, la regex correspondante est \d{2}/\d{2}/\d{4} (ou \d{1,2}/\d{1,2}/\d{4} si le nombre de caractères est variable pour le jour et le mois)
pour une IP ###.###.###.## : \d{3}\.\d{3}\.\d{3}\.\d{2}
etc..

DOBELIOU
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
7 juil. 2003 à 17:50
le problème avec un mask, c,est si supposons l'IP est 24.10.10.12 (ok, c'est un exemple) ton mask marchera pas, puisque les "." sont pas au même endroit

pareil pour la date, si l'année est sur 2 ou 4 chiffres et le mois garde ou perd le 0 devant les premier mois (01/01/2003) ou (1/1/2003). Dans ton exemple, il les garde, masi faudrais vérifier pour pas avoir de surprise
0
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
7 juil. 2003 à 19:05
ok, cetait pas très clair
si je m'en rapelle bien :
dans la syntaxe X{n,m}, on retrouve X entre n et m fois (inclus)
donc par ex \d{2,4} indique 2, 3 ou 4 chiffes successifs

j'sais pas si c'est plus clair... mais avec ce genre de truc, on obtient des masques généraux sans trop de pb

A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_samsih Messages postés 16 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 8 mai 2004
12 juil. 2003 à 16:21
J'ai essayer cette méthode, mais il me génere toujours une erreur au niveau des{ }
existe t'il des logiciels qui génere automatiquement des expreg de n'importe quel mot.
Merci.
0
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
30 juil. 2003 à 15:42
excuse le retard pour cause de vacances!!

le problème vient plutôt des \
met \\ à la place de \ dans ta chaîne
String test = "032";
String reg = "\\d{2,4}";
System.out.println(test.matches(reg));

DOBELIOU
0
Rejoignez-nous