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

froll Messages postés 12 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 10 décembre 2010 - 10 déc. 2010 à 10:42
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 14 déc. 2010 à 10:33
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

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
12 déc. 2010 à 09:24
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!
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
14 déc. 2010 à 10:33
Pas terrible, ton expression régulière...

tentes :

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

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