Extraire un paragraphe d'un fichier texte JAVA

Fermé
Rafaa - 12 juil. 2014 à 15:31
 Rafaa - 13 juil. 2014 à 18:33
Bonjour,

Je voudrais extraire un paragraphe d'un fichier texte que je suis entrain de charger dans à l'aide d'un bufferReader. J'ai utilisé le pattern.compile mais ça marche pas que pour des petits exemples comme par exemple extraire 9+5 de l'expression (9+5). Je veux extraire par exemple le 1er et le 3eme paragraphes qui commencent par yahoo et finissent par annuaire. Notez bien que je ne peux pas modifier le fichier texte.



Yahoo est une société américaine de services sur Internet, opérateur notamment d'un portail Web. À l'origine, Yahoo! était uniquement un annuaire

Web. En 2009, Yahoo! offre de nombreux autres services gratuits et payants, dont un moteur de recherche, des boîtes à courrier électronique, de la messagerie instantanée, de l'hébergement web et des portails (nouvelles, finances, etc).

Yahoo a été créé par David Filo et Jerry Yang à l'université Stanford, en janvier 1994, puis l'entreprise a été fondée en mars 1995. Son siège social est situé à Sunnyvale en Californie un annuaire.

Selon Alexa Internet, Yahoo! était le site web le plus visité en 2004. Le réseau des sites Yahoo! a servi plus de trois milliards de pages par jour en octobre 2004.


A voir également:

2 réponses

KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
12 juil. 2014 à 15:50
Bonjour,

"J'ai utilisé le pattern.compile mais ça marche pas que pour des petits exemples"
C'est faux, il faut juste adapter l'expression régulière à tes données, même si ce n'est pas toujours simple.

Exemple :

private static final String text =
      "Yahoo est une société américaine de services sur Internet, opérateur notamment d'un portail Web. À l'origine, Yahoo! était uniquement un annuaire \r\n"
    + "\r\n"
    + "Web. En 2009, Yahoo! offre de nombreux autres services gratuits et payants, dont un moteur de recherche, des boîtes à courrier électronique, de la messagerie instantanée, de l'hébergement web et des portails (nouvelles, finances, etc). \r\n"
    + "\r\n"
    + "Yahoo a été créé par David Filo et Jerry Yang à l'université Stanford, en janvier 1994, puis l'entreprise a été fondée en mars 1995. Son siège social est situé à Sunnyvale en Californie un annuaire. \r\n"
    + "\r\n"
    + "Selon Alexa Internet, Yahoo! était le site web le plus visité en 2004. Le réseau des sites Yahoo! a servi plus de trois milliards de pages par jour en octobre 2004. ";

public static void main(String[] args)
{
    Pattern p = Pattern.compile("(Yahoo.*annuaire)");    
    Matcher m = p.matcher(text);
    
    while (m.find())
        System.out.println(m.group(1));
}
0
Merci KX pour ta réponse.

Je lis mon texte à partir d'un fichier .txt et je ne peux pas le modifier. En fait, je suis entrain de créer un analyseur de fichier logs qui prend des fichiers txt et les analyse. Ces fichiers sont de la forme suivante

Client
IP_ADDRESS=192.168.1.5
IP_SUBNET_MASK=255.255.255.252
DEFAULT_GATEWAY=192.168.1.3
TFTP_SERVER=192.168.1.3
TFTP_FILE=c2900-universalk9-mz.SPA.152-3.T3.bin
tftpdnld
end

Bank
IP_ADDRESS=3.3.1.3
IP_SUBNET_MASK=255.0.0.0
DEFAULT_GATEWAY=1.1.1.1
TFTP_SERVER=192.168.1.3
TFTP_FILE=c2900-universalk9-mz.SPA.152-3.T3.bin
tftpdnld
end


Il faut noter bien le retour a la ligne que je ne peux pas le modifier. dans cet exemple, j'ai besoin d'afficher de Bank à end c'est a dire le 2eme paragraphe. Je ne peux pas utiliser les num de lignes car c variable. Merci pour ton aide
0
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
13 juil. 2014 à 18:11
Bonjour,

Que tu lises depuis un fichier texte ne change pas grand chose, il faut tout lire, mettre dans une String et la parser. Et même si tu ne peux pas changer le fichier texte, tu peux tout à fait modifier le String.

Quant à l'expression régulière que ce soit Yahoo/annuaire ou Bank/end ça ne change rien du tout. Et si tu veux marquer le fait que c'est un début et une fin de paragraphe.tu peux rajouter les marqueurs \r et ou \n dans ton expression régulière, même si je doute que cela change quoi que ce soit.
0
Merci KX. Je comprends beaucoup mieux maintenant. Merci inifiniment pour votre aide.
0