Регулярное выражение зависает – средство сопоставления JavaJAVA

Программисты JAVA общаются здесь
Anonymous
Регулярное выражение зависает – средство сопоставления Java

Сообщение Anonymous »

Строка:


Аква, лауретсульфат натрия, лаурилсульфат натрия, диметикон, кокамид МЭА, карбонат цинка, дистеарат гликоля, хлорид натрия , пиритион цинка, ксилолсульфонат натрия, цетиловый спирт, отдушка, гуаровый гидроксипропилтримониум хлорид, сульфат магния, бензоат натрия, лауретсульфат аммония, гидроксид карбоната магния, линалоол, бутилфенил метилпропиональ, лимонен, гидроксиизогексил-3-циклогексенкарбоксальдегид, бензиловый спирт, гексил С. иннамал, цитронеллол , токоферилацетат, жидкий парафин, полинафталинсульфонат натрия, CI 19140, DMDM ​​гидантоин, CI 15510, метилхлоризотиазолинон, динатрий ЭДТА, тетранатрий ЭДТА, метилизотиазолинон.


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

Код: Выделить всё

System.out.println(string.matches("([\\W]*\\b[A-Z\\d]\\w+\\b[\\W]*)+"));
Java-приложение зависает. Я не могу найти ошибку в RegEx. Погуглив, я узнал, что это можно назвать «катастрофическим возвратом назад»!?
Регулярное выражение должно соответствовать строке, если оно содержит только слова в верхнем регистре.
Если, например, одно слово написано в нижнем регистре, оно не должно совпадать.

Подробнее здесь: https://stackoverflow.com/questions/121 ... va-matcher

Вернуться в «JAVA»