import java.util.regex.Matcher;
import java.util.regex.Pattern;

class TesteRegex {

    private static final Pattern AGENCIA_CONTA = Pattern.compile(
    	    "(?:Agência: [0-9]{4} Conta: [0-9]{5}-[0-9X])|" +
    	    "(?:Conta: [0-9]{5}-[0-9X] Agência: [0-9]{4})");

    public static void main(String[] args) {
        String texto = ""
                + "Banana abacaxi pêra Agência: 5720 Conta: 43821-X abacate "
                + "melancia Agência: 3481 Conta: 53895-0. verde azul "
                + "amarelo Agência: 6666 Conta: 66667-NÃO É ESSA "
                + "Agência: 9123 Conta: 44578-2 "
                + "laranja Conta: 43210-7 Agência: 6589 verde "
                + "rosa lilás Conta: 77777-7 Não vai dar Agência: 4444";

        Matcher m = AGENCIA_CONTA.matcher(texto);
        while (m.find()) {
        	String achou = texto.substring(m.start(), m.end());
            System.out.println("Achou nas posições " + m.start() + "-" + m.end() + ": "
                    + achou);
            String agencia, conta;
            if (achou.startsWith("Agência:")) {
                agencia = achou.substring(9, 13);
                conta = achou.substring(21, 28);
            } else {
                agencia = achou.substring(24, 28);
                conta = achou.substring(7, 14);
            }
            System.out.println("Os valores encontrados são: " + agencia + " e " + conta + ".");
        }
    }
}