Problème avec regex JAVA (l'expression ne fonctionne pas)

Signaler
Messages postés
12
Date d'inscription
lundi 26 novembre 2007
Statut
Membre
Dernière intervention
10 décembre 2010
-
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
Bonjour,

dans le cadre d'un projet, je m'essaye aux expressions régulière de java, avec les bibliothèques pattern et matcher.

Après avoir suivi les instructions, je test une regexp toute simple, qui est cencé me sortir les phrases qui ne commencent pas par des chiffres. Seulement le filtrage ne fonctionne pas et elle me sort toutes les phrases du fichier lu en entrée.

A oui je précise, je lis un fichier pdf en entrée, et dans ce fichier j'annalyse chaque phrase une à une.

Voici le code en question:


import java.io.File;
import java.io.IOException;

import org.apache.pdfbox.pdmodel.PDDocument;

import org.apache.pdfbox.util.PDFTextStripper;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;



public class PDFViewer
{
 public PDFViewer(String pdfFileName) {
    System.out.println("PDF file name to show is :"+pdfFileName);
    final PDDocument pdDoc;
    String chaine;
    String[] tableau_chaine;

    String[] mot= new String[7];
    
    int i=0;
//	int j=0;

//---------------------------------
    try {
      File file = new File(pdfFileName);
      pdDoc = PDDocument.load(file);
      int numOfPages = pdDoc.getNumberOfPages();
      System.out.println("NB page :"+numOfPages);
      PDFTextStripper pdfStripper = new PDFTextStripper();
      chaine=pdfStripper.getText(pdDoc);
      tableau_chaine=chaine.split("\n");
      for(i=0;i<tableau_chaine.length;i++){
try{
Pattern p = Pattern .compile("^[^[0:9]+][^[0:9]]+");
String entree = tableau_chaine[i];
Matcher m = p.matcher(entree);
while (m.find())
System.out.println("expression réguliere: "+m.group()+"     pour la case:          "+tableau_chaine[i]);
      			//System.out.println("expression réguliere: "+entree.substring(m.start(), m.end()));
}catch(PatternSyntaxException pse){
}
      }


    } catch (IOException e) {
      System.out.println("Probleme");
    }

}
  public static void main(String[] args) 
  {
    System.out.println(args[0]+"\n \n");
    new PDFViewer(args[0]);
  }
}



Voilà voilà, si quelqu'un a une idée de pourquoi cela ne marche pas, je suis preneur.
Personnellement j'ai l'impression que les regexp ne marchent pas aussi bien avec JAVA qu'avec les shell linux ou bien les bases de données. Je me demande si JAVA n'impose pas certaines contraintes...

2 réponses

Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
28
Bonjour

Es-tu certain que ce n'est pas le PDF Parser qui genere le probleme?
peux-tu afficher les lignes de tableau_chaine, pour voir s'il ne t'en manque pas ?

Bob.
C# is amazing, enjoy it!
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
Pas terrible, ton expression régulière...

tentes :

^[^0-9\r\n].*?$

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp