codice:
        Pattern p = Pattern.compile("</option>");
        String[] trovati = p.split("<option value=\"AG\">Agrigento - AG</option><option value=\"AL\">Alessandria - AL</option><option value=\"AN\">Ancona - AN</option>");
        Pattern p2 = Pattern.compile("<option value=\"(\\w\\w)\">(.+?) - (\\w\\w)");
        for (int i = 0; i < trovati.length; i++) {
            Matcher singola = p2.matcher(trovati[i]);
            if (singola.matches()) {
                System.out.println("Nome abbreviato: "+singola.toMatchResult().group(1)); // Stampa 17
                System.out.println("Nome intero: "+singola.toMatchResult().group(2)); // Stampa 23
                System.out.println("Nome abbreviato: "+singola.toMatchResult().group(3)); // Stampa 1986
            } else {
                System.out.println("Non corrisponsto");
            }
            System.out.println("================");
        }
Stampa:
Nome abbreviato: AG
Nome intero: Agrigento
Nome abbreviato: AG
================
Nome abbreviato: AL
Nome intero: Alessandria
Nome abbreviato: AL
================
Nome abbreviato: AN
Nome intero: Ancona
Nome abbreviato: AN
================