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


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

Так что я бы в конечном итоге с массивом вроде такого: results = ['HELLO there', 'HOW are', 'YOU']


EDIT:

Я пробовал:

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

это, кажется, не работает, хотя.

3 59

3 ответа:

предлагаю

l = re.compile("(?<!^)\s+(?=[A-Z])(?!.\s)").split(s)

Регистрация демо.

вы могли бы использовать lookahead:

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

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

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

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

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

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

вам не нужно разделить, а скорее findall:

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