Попробуй это.
Он похож на ответы Андрея и С. Пеллегрино, однако он не будет захватывать только строки с цифрами, например '123'
, и будет захватывать строки с цифрой в любой позиции, а не только в конце.
Объяснение шаблона:
\b
- Соответствует границе слова (начало строки)
(?=.*[A-Z])
- Утверждать, что следующеевсе, что следует за заглавной буквой (т.е. строка содержит хотя бы одну заглавную букву).Это называется положительным взглядом вперед.
[A-Z\d]{2,}
- совпадение заглавной буквы или цифры два или более раз.
\b
- сопоставление границы другого слова (конец строки).
import re
def acronym(s):
pattern = r'\b(?=.*[A-Z])[A-Z\d]{2,}\b'
return re.findall(pattern, s)
Редактировать: добавить описание шаблона регулярного выражения.