URL: https://linuxfr.org/forums/programmation-java/posts/java-et-regexp Title: Java et Regexp Authors: cho7 Date: 2004年09月17日T12:15:37+02:00 Tags: Score: 0 Bonjour, Je suis actuellement en train d'ecrire un petit programme en Java qui est censé aller récuperer des dvds disponibles sur des sites marchands (une sorte de méta-moteur). Là où le problème survient, c'est la lenteur avec laquelle mes Regexp sont matchées. Prenons par exemple le code de la page suivante [http://mediabarre.2xmoinscher.com/DVD/liste.asp?strRech=robin%20des(...)](http://mediabarre.2xmoinscher.com/DVD/liste.asp?strRech=robin%20des%20bois) Et appliquons la regexp suivante : ()(<a TITLE=\"Cliquez[^>]*?href=(\".*?\")>)(.*?).+?Meilleur prix : <span class=\"DVD-TXT\">([^>]+?) Sous visual-regexp, pas de problème, en 1 fraction de seconde, il m'isole les liens valides, avec leur prix, etc. En revanche, sous mon programme, il mouline un ptit moment avant de me pondre le résultat, et ca j'aimerai bien savoir pourquoi (je ne parle pas d'optimiser ma regexp, pour ca c'est evident que ce n'est pas au point, mais meme non-optimisé, visual-regexp arrive a matché en 50 millisecondes, donc...) Bref, ci joint le bout en question de mon code : £spaces£ £/spaces£String mediabarre = new String("[http://mediabarre.2xmoinscher.com/DVD/liste.asp?strRech=(...)](http://mediabarre.2xmoinscher.com/DVD/liste.asp?strRech=)"); £spaces£ £/spaces£String keywords=new String("robin des bois"); £spaces£ £/spaces£keywords=URLEncoder.encode(jTextField1.getText()); £spaces£ £/spaces£mediabarre = mediabarre + keywords; £spaces£ £/spaces£String html=""; £spaces£ £/spaces£String tmp=""; £spaces£ £/spaces£ £spaces£ £/spaces£try{ £spaces£ £/spaces£ £spaces£ £/spaces£URL doc1 = new URL(mediabarre); £spaces£ £/spaces£BufferedReader plop = new BufferedReader(new InputStreamReader(doc1.openStream())); £spaces£ £/spaces£ £spaces£ £/spaces£while((tmp=plop.readLine())!=null) £spaces£ £/spaces£{ £spaces£ £/spaces£html = html + tmp; £spaces£ £/spaces£} £spaces£ £/spaces£plop.close(); £spaces£ £/spaces£ £spaces£ £/spaces£Pattern p; £spaces£ £/spaces£Matcher m; £spaces£ £/spaces£ £spaces£ £/spaces£p = Pattern.compile("()(<a TITLE=\"Cliquez[^>]*?href=(\".*?\")>)(.*?).+?Meilleur prix : <span class=\"DVD-TXT\">([^>]+?)"); £spaces£ £/spaces£m = p.matcher(html); £spaces£ £/spaces£ £spaces£ £/spaces£ £spaces£ £/spaces£while (m.find()) £spaces£ £/spaces£{ £spaces£ £/spaces£txt_resultat.setText(txt_resultat.getText().concat("Mediabarre : " + m.group(4) + " pour " + m.group(5) + "\n")); £spaces£ £/spaces£ £spaces£ £/spaces£} Voilà, si quelqu'un se sent l'âme charitable, je lui en serait très reconnaissant. Merci