Stai usando alcuni caratteri nel modo sbagliato.
Innanzitutto il ".", se non è preceduto dal doppio slash, assume il significato di "qualsiasi carattere", anche se solitamente non fa il matching con il carattere di terminazione della linea.
Poi stai utilizzando delle parentesi tonde che fanno dei raggruppamenti in modo "curioso".
Dopo la parentesi iniziale (di cui fai correttamente l'escape), raggruppi (con le parentesi tonde), il seguente pattern :
C.+[0-9]
Questo significa che cerchi una C iniziale, seguita da una o più occorrenze (+) di qualsiasi carattere (.), seguita poi da una cifra da 0 a 9. Di questo gruppo poi richiedi di avere una o più occorrenze (con il + fuori dalla parentesi).
Il resto poi non conta, catturi il carattere "-", ma l'asterisco consente di non trovare alcun match.
Il risultato che trovi (C. 1442-2770-1452) viene trovato perché dopo la "C" iniziale il "." fa il matching dell'intera sequenza ". 1442-2770-145", cioé prende tutto il resto della stringa escluso il "2" finale che viene trovato dal successivo [0-9].
Ma è quasi un caso
Intanto fornisci qualche informazione in più : la sequenza può iniziare solo con "C." o con "A.C." come nel tuo esempio? E' seguita poi da uno spazio singolo? In seguito ci sono solo combinazioni di 4 cifre oppure una singola lettera maiuscola, e separati dal "-" ? Possono essere mischiate come capita o la lettera può essere solo alla fine?
Queste sono solo alcune possibili domande, senza sapere tutto nei dettagli non è possibile trovare una soluzione "sicura".
Ad esempio il seguente pattern :
Matcher m = Pattern.compile("\\((A\\.)?C\\. ([0-9][0-9][0-9][0-9]|[A-Z])(-([0-9][0-9][0-9][0-9]|[A-Z]))*\\)").matcher(x);
trova i seguenti risultati :
C:\...>java Test
(C. 1442-2770-1452)
(C. 1685-B)
(A.C. 4144-A)
Io ho cercato pattern compresi tra parentesi tonde che inizino con "A." o con "A.C.", seguiti da spazio e dalla combinazione di almeno una sequenza di 4 cifre o una singola lettera maiuscola, le successive (possibili) sequenze devono essere invece precedute da "-".
Questo pattern dovrebbe trovare anche cose del tipo "(A.C. C-D-0254-B-6525)", quindi servono più dettagli.
In ogni caso non è una soluzione tanto elegante, ma ad ora non saprei fare molto di meglio.
Se serve le parentesi iniziali e finali possono essere facilmente rimosse dal risultato (anche se la tua espressione le manteneva), sia manipolando in seguito il risultato (banalmente butti via primo e ultimo carattere) sia direttamente all'interno dell'espressione regolare, utilizzando lookbehind e lookahead.
Siamo vicini a quello che volevi ?