Зависание регулярного выражения - Java matcher

Строка:

Aqua, Sodium Laureth Sulfate, Sodium Lauryl Sulfate, Dimethicone, Cocamide MEA, Zinc Carbonate, Glycol Distearate, Sodium Chloride, Zinc Pyrithione, Sodium Xylenesulfonate, Cetyl Alcohol, Parfum, Guar Hydroxypropyltrimonium Chloride, Magnesium Sulfate, Sodium Benzoate, Ammonium Laureth Sulfate, Magnesium Carbonate Hydroxide, Linalool, Butylphenyl Methylpropional, Limonene, Hydroxyisohexyl 3-Cyclohexene Carboxaldehyde, Benzyl Alcohol, Hexyl Cinnamal, Citronellol, Tocopheryl Acetate, Paraffinum Liquidum, Sodium Polynaphthalenesulfonate, CI 19140, DMDM Hydantoin, CI 15510, Methylchloroisothiazolinone, Disodium EDTA, Tetrasodium EDTA, Methylisothiazolinone.

Текущее регулярное выражение:

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

Приложение Java зависает. Я не могу найти ошибку в RegEx. Погуглив, я обнаружил, что это можно назвать «катастрофическим возвратом»!? Регулярное выражение должно соответствовать строке, если оно содержит только заглавные слова если, например, 1 слово в нижнем регистре не должно совпадать.

Ответы на вопрос(2)

Ваш ответ на вопрос