Problème entre affichage et traitement d'un string
Bonjour,
J'ai un problème que je n'arrive pas à résoudre. Ce programme me sert à chercher des adresses mails dans un document texte à partir des expressions régulières :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
public void search() throws IOException{
boolean b =true;
String s ="[_a-zA-Z\\d\\-\\.]+@[_a-zA-Z\\d\\-\\.]+(\\.[_a-zA-Z\\d\\-]{2,4})";
pattern = Pattern.compile(s);
String line = a.readLine() ;
while (line != null) {
m = pattern.matcher(line) ;
System.out.println(m.find());
while(m.find()){
for(int i=0; i<=m.groupCount(); i++) {
if(counts.containsKey(m.group(i))){
((Counter)counts.get(m.group(i))).increment();}
else{
counts.put(m.group(i), new Counter());}
}
}
line = a.readLine() ;
}
} |
Lorsque je rentre directement mon expression régulière dans le code (comme ci-dessus), le programme fonctionne correctement, il m'affiche bien des adresses mails.
Mais, je voulais pouvoir accéder à une sorte de dictionnaire d'expression régulière dans un fichier txt. J'ai donc créé une autre classe qui me permet de récupérer l'expression régulière dans ce fichier txt. Et là c'est le drame, l'affichage de l'expression régulière est correct dans la console. Par contre, je n'ai aucun résultat positif de mon expression régulière. Comme s'il y avait une différence entre l'affichage et le traitement de ma chaine de caractère.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
private WordCount wc;
private Object [][] data ;
private DicPattern d;
private Object [] t;
public Table(lister l, int j){
this.wc=null;
try{
d = new DicPattern("C:\\Documents and Settings\\Leneuf\\Bureau\\pattern\\pattern.txt");
t=d.getHashPattern().values().toArray();
int m = d.getNbPattern();
try {
for (int n=0;n<m;n++){
wc=new WordCount(l.getVector().get(j).toString());
wc.search(t[n].toString());
...//je passe la suite
//j'ai donc modifier ma méthode search en conséquence
public void search(String s) throws IOException{
boolean b =true;
System.out.println(s);
pattern = Pattern.compile(s);
String line = a.readLine() ;
while (line != null) {
m = pattern.matcher(line) ;
System.out.println(m.find());
while(m.find()){
for(int i=0; i<=m.groupCount(); i++) {
if(counts.containsKey(m.group(i))){
((Counter)counts.get(m.group(i))).increment();}
else{
counts.put(m.group(i), new Counter());}
}
}
line = a.readLine() ;
}
} |
J'ai l'impression qu'il y a un problème d'encodage de ma chaine de caractère.
j'ai aussi essayé avec clavier.lireString(). J'ai le même problème.