Python基于正则expression式分割string

用大写字母(Python)分割string"HELLO there HOW are YOU"的最佳方法是什么?

所以我最终会得到一个这样的数组: results = ['HELLO there', 'HOW are', 'YOU']


编辑:

我努力了:

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

但似乎并不奏效。

我build议

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

检查这个演示

你可以使用一个lookahead:

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

这将在每个空格处被分割,后面跟着一串以大写字母结尾的大写字母。

请注意,方括号只是为了可读性,也可以省略。

如果一个单词的第一个字母是大写字母就足够了(所以如果你想要在Hello前面分割),它变得更加容易:

 re.split(r'[ ](?=[AZ])', input) 

现在这个分裂在每个空格,然后是任何大写字母。

你不需要拆分,而是find:

  re.findall(r'[AZ]+[^AZ]*', str)