基于正则表达式的拆分字符串

用大写字母单词(在 Python 中)拆分像 "HELLO there HOW are YOU"这样的字符串的最佳方法是什么?

所以最终得到的数组类似于: results = ['HELLO there', 'HOW are', 'YOU']


编辑:

我试过了:

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

不过好像没什么用。

211805 次浏览

你可以向前看:

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

这将在每个空格后面跟着一个以单词边界结束的大写字母字符串时分裂。

请注意,方括号仅用于可读性,也可以省略。

如果一个单词的第一个字母是大写就足够了(所以如果你也想在 Hello前面分开) ,那就更容易了:

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

现在这个在每个大写字母后面的空格处分开。

我建议

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

检查 译自: 美国《科学》杂志网站(http://ideone.com/qoaTqr)

您的问题包含字符串文字 "\b[A-Z]{2,}\b", 但是 \b意味着退格,因为没有 r- 修饰符。

试试: r"\b[A-Z]{2,}\b"