Desempenho de regex Java

Estou tentando analisar links com regex com Java.

Mas acho que está ficando muito lento. Por exemplo, para extrair todos os links de:

http://news.google.com.ar/nwshp?hl=es&tab=wn

... está gastando 34642 milissegundos (34 segundos !!!)

Aqui está o regex:

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

Os sinalizadores para o padrão:

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

E o código pode ser algo como isto:

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){
     }
 }

Você pode me dar uma dica?

Dados extras:
1Mbit
Core 2 Duo
1Gb de RAM
Single Threaded

questionAnswers(4)

yourAnswerToTheQuestion