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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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() ; } }
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.
J'ai l'impression qu'il y a un problème d'encodage de ma chaine de caractère.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 aussi essayé avec clavier.lireString(). J'ai le même problème.
Partager