Salut, :mrgreen:
Version imprimable
Salut, :mrgreen:
salut,
en faisant celac'est comme si tu disais que ton fichier html commence par <table> et se termine par </table>Code:Pattern p = Pattern .compile("<table .*>\\s*.*</table>");
donc, essaie avec ".*" avant <table> et aussi après </table>
aussi, pour récupérer le contenu des balises table, tu me le contenu entre parenthèses pour le récupérer avec la méthode group(int index)
Code:Pattern p = Pattern .compile(".*<table .*>(.*?)</table>.*");
essaie avec ceci
Code:Pattern ptrn = Pattern.compile(".*?<table[^>]*>(.*?)</table>.*?");
c'est normal puisque tu lis ligne par ligne
généralement un code html qui contient un tableau est ainsi formaté
donc la première ligne que tu lis avec readLine, elle te retournera "<table>", et ceci ne correspond pas à ton pattern, donc, essaie de mettre tout ton html dans un String, et après tu le passes à ton matcherCode:
1
2
3
4
5
6
7
8 .... <table> <tr> <td>...</td><td>....</td> </tr> </table> ....
par exp, tu pourrais utiliser un StringBuilder auquel tu ajoutera chaque ligne lue, et à la fin de la lecture, tu le passes à la méthode matcher
rmq: dans ton code, tu créais à chaque boucle un objet Pattern, alors que tu utilises le même Pattern, donc, pas la peine de le créer pour chaque ligne lue
Code:
1
2
3
4
5
6
7
8
9
10
11
12 String ligneLue; StringBuilder codeHTML = new StringBuilder() String expReguliere = ".*?<table[^>]*>(.*?)</table>.*?"; Pattern p = Pattern.compile(expReguliere); while ((ligneLue = in.readLine()) != null) { codeHTML.append(ligneLue); } Matcher m = p.matcher(codeHTML.toString()); while(m.find()) System.out.println(m.group(1));
il fait combien ton fichier html ( il doit vraiment être gros !! )
c'est quoi l'url pour que je teste si j'ai le même problème
[ EDIT ] je vien de le tester avec la page d'accueil de developpez.com, et ça marchait, sachant que mon pc est loin d'être une machine puissante
une remarque, avec la regex proposée plus haut, il y aura un petit souci dans le cas d'une table qui est à l'intérieur d'une autre table :aie: