Java regex performance

Je suis en train d'analyser les liens avec la regex avec Java.

Mais je pense qu'il devient trop lent. Par exemple, pour extraire tous les liens à partir de:

...c'est des dépenses 34642 millisecondes (34 secondes!!!)

Voici la regex:

private final String regexp = "<a.*?\\shref\\s*=\\s*([\\\"\\']*)(.*?)([\\\"\\'\\s].*?>|>)";

Les drapeaux pour le modèle:

private static final int flags = Pattern.CASE_INSENSITIVE | Pattern.DOTALL |Pattern.MULTILINE | Pattern.UNICODE_CASE | Pattern.CANON_EQ;

Et le code peut être quelque chose comme ceci:

private void processURL(URL url){
    URLConnection connection;
    Pattern pattern = Pattern.compile(regexp, flags);
    try {
        connection = url.openConnection();
        InputStream in = connection.getInputStream();
        BufferedReader bf = new BufferedReader(new InputStreamReader(in));
        String html = new String();
        String line = bf.readLine();            
        while(line!=null){
            html += line;
            line = bf.readLine();
        }
        bf.close();
        Matcher matcher = pattern.matcher(html);
        while (matcher.find()) {
            System.out.println(matcher.group(2));
        }
     } catch (Exception e){
     }
 }

Pouvez-vous me donner un Indice?

Données Supplémentaires:

1Mbit

Core 2 Duo

1 go de RAM

Mono-Thread

regex en grattant un site web! Mauvaise mauvaise mauvaise option!
il tourne plus vite si votre téléchargement de l'ensemble de la page en premier, puis exécutez votre regex? Êtes-vous sûr que c'est la regex prend autant de temps et de ne pas les différentiels de téléchargement?
Oui Steven, c'est l'expression rationnelle des choses. Je suis en train de faire certains profils avec Différent des Analyseurs.
Cette réponse aussi, des réponses à cette question.

OriginalL'auteur santiagobasulto | 2010-10-11