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.

2 réponses

  1. KX Messages postés 19031 Statut Modérateur 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
  2. 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
    1. KX Messages postés 19031 Statut Modérateur 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
    2. Rafaa
       
      Merci KX. Je comprends beaucoup mieux maintenant. Merci inifiniment pour votre aide.
      0