按大写字母拆分字符串但忽略AAA Python Regex

时间:2017-02-16 13:34:01

标签: python regex python-3.x

我的正则表达式:

vendor = "MyNameIsJoe. I'mWorkerInAAAinc."
ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor)

按大写字母拆分字符串,例如:

'MyNameIsJoe。 I'WorkerInAAAinc'变成'我的名字是Joe。我是AAA公司的工人。

2 个答案:

答案 0 :(得分:0)

您可以使用re.findall()来查找预期的字词,而不是分割:

In [46]: ' '.join(re.findall(r'[A-Z]?[^A-Z\s]+|[A-Z]+', vendor))
Out[46]: "My Name Is Joe. I'm Worker In AAA inc."

请注意,此选项[A-Z]+将与AAA匹配,这意味着任何长度大于1的大写字母组合,如果您不想要这样,您可以简单地使用{{1} }。

答案 1 :(得分:0)

使用sub

re.sub(r'([a-z])([A-Z])|(?<=[A-Z])([A-Z]+)', r'\g<3>\g<1> \g<2>', vendor)