Expressão regular trava - matcher Java

Corda:

Aqua, Lauril Sulfato de Sódio, Lauril Sulfato de Sódio, Dimeticona, Cocamida MEA, Carbonato de Zinco, Distearato de Glicol, Cloreto de Sódio, Piritionato de Zinco, Xilenosulfonato de Sódio, Álcool Cetílico, Parfum, Cloreto de Hidroxipropiltrimônio Guar, Sulfato de Magnésio, Benzoato de Sódio, Laureth Sulfato de Amônio, Magnésio Hidróxido de Carbonato, Linalol, Butilfenilmetilpropional, Limoneno, Hidroxiisohexil 3-ciclohexeno Carboxaldeído, Álcool benzílico, Cinilmal Hexil, Citronelol, Acetato de Tocoferol, Paraffinum Liquidum, Polinaftalenossulfonato de sódio, CI 19140, DMDM ​​Hidantoína, CI 15510, Metilcloroisotiazolinona, EDTA Dissódico, EDTA Tetrassódico, Metilisotiazolinona.

Regex atual:

System.out.println(string.matches("([\\W]*\\b[A-Z\\d]\\w+\\b[\\W]*)+"));

Aplicativo Java desliga. Não consigo encontrar o erro no RegEx. Por googeling eu descobri que isso poderia ser chamado de "backtracking catastrófico"!? O Regex deve coincidir com o String se ele só contiver letras maiúsculas se, por exemplo, uma palavra for minúscula não deve corresponder a ela.

questionAnswers(2)

yourAnswerToTheQuestion