Problème avec regex JAVA (l'expression ne fonctionne pas)
froll
Messages postés12Date d'inscriptionlundi 26 novembre 2007StatutMembreDernière intervention10 décembre 2010
-
10 déc. 2010 à 10:42
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 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...
A voir également:
Problème avec regex JAVA (l'expression ne fonctionne pas)
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 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 ?