Шаблон поиска в Python

Не могу понять как составить шаблон в Python

Есть ячейка:

Спать легли однажды ДЕТИ – Окна все затемнены. А проснулись НА РАССВЕТЕ – В окнах свет – и НЕТ ВОЙНЫ!

Необходимо найти все слова и фразы (!) написанные заглавными буквами:

ДЕТИ
А
НА РАССВЕТЕ
В
НЕТ ВОЙНЫ

Используя шаблон (\b([А-ЯЁA-Z]+)\b)

Получаем итог: 
ДЕТИ
А
НА
РАССВЕТЕ
В
НЕТ
ВОЙНЫ

разбивает фразы по словам

Используя шаблон (\b([А-ЯЁA-Z]+)\b \b([А-ЯЁA-Z]+)\b)

Получаем итог:
НА РАССВЕТЕ
НЕТ ВОЙНЫ

не ищет одиночные слова


Ответы (1 шт):

Автор решения: Дмитрий Игоревич

Конкретно в Вашем примере подойдёт

\b([А-ЯЁA-Z]+)\b.(\b[А-ЯЁA-Z]+\b)*

но этот шаблон просто предполагает возможное наличие второго слова. В примере желаемые словосочетания имеют семантический смысл. А фактически шаблон будет находить любые рядом стоящие слова, написанные с заглавной буквы.

Поэтому не очень уверен что именно это вы хотели, но регулярные выражения ничего про семантику не знают.

→ Ссылка