Extraire un paragraphe d'un fichier texte JAVA

Rafaa -  
 Rafaa -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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
Rafaa
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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
Rafaa
 
Merci KX. Je comprends beaucoup mieux maintenant. Merci inifiniment pour votre aide.
0