Подтвердить что ты не робот

Разделенная строка Python на основе регулярного выражения

Каков наилучший способ разделить строку как "HELLO there HOW are YOU" на слова верхнего регистра (в Python)?

Итак, у меня получится такой массив: results = ['HELLO there', 'HOW are', 'YOU']


ИЗМЕНИТЬ:

Я пробовал:

p = re.compile("\b[A-Z]{2,}\b")
print p.split(page_text)

Однако это не работает.

4b9b3361

Ответ 2

Вы можете использовать lookahead:

re.split(r'[ ](?=[A-Z]+\b)', input)

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

Обратите внимание, что квадратные скобки предназначены только для удобства чтения и также могут быть опущены.

Если достаточно, чтобы первая буква слова была в верхнем регистре (так что если вы хотите разбить перед Hello), это станет еще проще:

re.split(r'[ ](?=[A-Z])', input)

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

Ответ 3

Вам не нужен раскол, а скорее findall:

 re.findall(r'[A-Z]+[^A-Z]*', str)

Ответ 4

Ваш вопрос содержит строковый литерал "\b[AZ]{2,}\b", но это \b будет означать возврат, потому что нет r-модификатора.

Попробуйте: r"\b[AZ]{2,}\b".