Pattern Java | Probleme ecriture dans fichier texte. - Java - Programmation
Marsh Posté le 21-07-2009 à 14:37:50
En recherchant un petit peu plus profondement sur internet, j'ai trouvé la solution :
Pattern p = Pattern.compile("\\d+(?=\\])" );
Ce qui permet de reconnaître un entier qui est suivi par un crochet.
En l'occurence dans mon exemple du message posté ci dessus, cela permet de chercher le 3, qui est variable.
Voici de plus le lien vers le site ou j'ai trouvé la solution : http://prevert.upmf-grenoble.fr/Pr [...] ieres.html
Merci !
Bonne apres midi !
Marsh Posté le 21-07-2009 à 15:50:48
Et par rapport à ton 1er essai, il ça ne suffisait pas de juste déspécialiser les crochets ?
Code :
|
Marsh Posté le 21-07-2009 à 16:11:00
Salut, je viens d'essayer ce que tu as proposé :
Résultat, il ne m'affiche que : [110/3] et non un ensemble de résultat voulu.
Alors qu'avec Pattern p2 = Pattern.compile("\\d+(?=\\])" ); il m'affiche :
12
52
52
3
100
22
Sachant que ce sont ces numéros qui me sont utiles (nombre de sauts, en routage OSPF pour les curieux) et issus de :
[110/12]
[110/52]
[110/52]
[110/3]
[110/100]
[110/22]
Étrange, je ne voit pas pourquoi il ne m'affiche que [110/3].
Cdt,
Romain.
Marsh Posté le 21-07-2009 à 17:13:57
Parce que [110/3] est le seul où le nombre variable est à 1 seul chiffre
Code :
|
avec un '+' derrière le \d ça doit mieux marcher
Marsh Posté le 22-07-2009 à 16:43:15
Re Bonjour, je fait face à un problème, je m'explique, mais tout d'abord voici le code :
Code :
|
Lorsque l'execution se termine, mon fichier texte ressemble à ceci :
|
Mon soucis est le suivant :
-pourquoi ces espaces ?
-est-il possible de transformer chaque bloc d'information ?
exemple :
on a ceci :
192.168.150.123
151
172.18.41.2
on aimerait ceci :
192.168.150.123 151 172.18.41.2
Merci pour la lecture et pour votre aide, je galère depuis hier, j'ai essayer de stocker dans un premier temps les valeurs dans un tableau, une ou deux dimensions, ou bien de concatener la totalité d'un bloc en un String.
Marsh Posté le 22-07-2009 à 17:21:50
-pourquoi ces espaces ?
ça dépend fortement de ton fichier en entrée
-est-il possible de transformer chaque bloc d'information ?
Cf. Stringbuilder
Petits conseils sur les performances, tu peux mettre certaines initialisation en dehors de tes boucles :
- la création/compilation des Pattern
- la création du FileWriter du fichier de sortie
Marsh Posté le 22-07-2009 à 17:36:52
Mon fichier en entrée n'a aucun saut de ligne, d'ou mon interrogation.
En ce qui concerne la transformation des blocs de données, je te remercie, je vais regarder tout ça, de même pour les performances !
A bientôt
Marsh Posté le 23-07-2009 à 19:42:31
Bonsoir à tous,
Salut Bidem,
j'ai suivi tes conseils, au sujet de l'optimisation des performances.
Certaines déclarations sont désormais hors des boucles while. (Pattern...)
Cependant il m'est impossible de déclarer les FileWriter et BufferedWriter hors de ces boucles, sous peines de récupérer une erreur "Stream closed" par le Catch.
Je suis aussi maintenant à la recherche d'un Pattern.
Ce Pattern porte sur la seconde chaîne de caractère de chaque ligne de mon fichier, elle même contenant seulement et exclusivement deux caractères. Le premier caractère étant un "O" (la lettre pas le chiffre )
Je suis sur une piste, mais malheureusement non positive : Pattern p = Pattern.compile("(O)\\s\\d+");
Ne comprenant pas trop l'intérêt de StringBuilder, (mise à part la rapidité d'exécution par rapport au nombre d'opération effectuées par une simple concaténation) car mon problème persiste, je voudrais savoir si ce soucis de sauts de lignes dans le fichier de sortie ne surviendrait pas lors de l'analyse de chaque ligne ne contenant pas ce que je recherche. (insertion de caractères vide et non null )
Merci pour la lecture et pour l'aide que vous m'apporter.
Cdt,
R
-------------------------------------------------------------------------------------------------------------------------------------------------
Edit => Ok pour le problème d'espace j'ai utilisé un StringBuffer :
Code :
|
Il ne me reste que le Pattern à trouver !
Ciao
Marsh Posté le 27-07-2009 à 14:28:59
Je n'arrive pas à trouver le pattern, pourriez vous m'aider ? Merci
Marsh Posté le 27-07-2009 à 15:04:33
Plus haut dans ton code tu fais
Code :
|
Donc tu n'auras aucun caractère espace dans tes result[x]
Marsh Posté le 27-07-2009 à 16:02:05
Merci Bidem, en effet je n'avais pas compris ce point là.
Voici le pattern qui fonctionne :
Pattern p4 = Pattern.compile("^O.\\p{Upper}\\p{Digit}|\\p{Upper}\\p{Digit}" );
Sachant que la première partie après le pipe correspond a une chaine unique a analyser : O*E2 ou le E2 est variables.
Cette recherche est différente de la seconde partie après le pipe : O E2.
Merci pour ton éclaircissement en tout cas !
Sujet clos !
Marsh Posté le 29-07-2009 à 14:32:06
Salµtation,
Je recherche un Pattern qui me trouve les lignes qui commence par un "[".
J'ai essayé
Code :
|
Cependant même si ce caractère ne se trouve pas en début de ligne (mais au milieu par exemple), il m'affiche là ligne.
Si je ne me trompe pas, le caractère "^" permet de faire une recherche sur le premier caractère de la ligne.
Merci de m'aider, je ne trouve pas la solution.
Marsh Posté le 21-07-2009 à 14:21:42
Salutations peuplade !
Dites moi, je suis à la recherche d'un pattern Java pour la recherche d'une chaîne de caractère bien spécifique par l'intermédiaire d'un matcher.
Voici ce que je recherche :
ex : [110/3]
En outre il faut que mon pattern corresponde à un crochet suivi de 110 suivi d'un slash, suivi d'un nombre quelconque, lui-même suivi d'un crochet fermé.
Dans l'exemple seul le 3 est variable.
J'ai essayé un machin bizzare du style : Pattern p = Pattern.compile("[110/\\d]" );
Sans succès.
Merci de votre aide !!
Regards
Message édité par raxzor le 29-07-2009 à 14:32:29