Cześć,
na wejściu mam następujące typy zdań do przefiltrowania:
Citizens of Poland, Sweden, Germany require something
Citizens of Poland require something
Citizens of United States require something
Potrzebuje odfiltrować nazwy krajów osobno, tak aby móc każdą nację potem zapisać.
Na potrzeby tego zadania zbudowałem takie wyrażenie regularne:
Pattern pattern = Pattern.compile("(?:Citizens of )? ([A-Z][a-z]+\\s*[A-Z]*[a-z]*) require");
Działa ono dobrze, dopóki nie pojawi się więcej niż jedna nazwa kraju, gdy jest ich więcej po przecinku, mechanizm nie działa.