Da una rapida occhiata mi pare evidente che tu stia invertendo i due termini di ricerca.

Pattern.matches(String s1, String s2) significa questo:

s1 : espressione regolare che indica "cosa cercare"
s2 : stringa da verificare che corrisponda alla regex

Quindi, prendendo per esempio la ricerca sul titolo del CD, il titolo del CD deve essere il secondo argomento (mentre tu lo stai mettendo come primo, passandolo prima ad un Pattern per poi riottenerlo tramite il metodo pattern(), perchè? Boh.), mentre al primo argomento deve starci l'espressione regolare relativa alla tua ricerca.

Dovresti rivedere un po' tutto il codice, perchè hai invertito ovunque i termini.


Ciao.