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

时间:2012-11-03 12:41:57

标签: python regex string replace split

用大写单词(在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)

但它似乎不起作用。

4 个答案:

答案 0 :(得分:92)

我建议

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

检查 this demo

答案 1 :(得分:39)

你可以使用前瞻:

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

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

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

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

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

现在,这会在每个空格处分开,后跟任何大写字母。

答案 2 :(得分:11)

您不需要拆分,而是查找:

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

答案 3 :(得分:0)

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

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