如何使用re拆分不同手机的字符串?

Tit*_*ter 2 python regex python-3.x

例如,有这样的手机:

phones = '+35(123) 456 78 90 (123) 555 55 55  (908)985 88 89   (593)592 56 95'
Run Code Online (Sandbox Code Playgroud)

我需要得到:

phones_list = ['+35(123) 456 78 90', '(123) 555 55 55', '(908)985 88 89', (593)592 56 95]
Run Code Online (Sandbox Code Playgroud)

试图解决使用re,但对我来说是一项艰巨的任务.

Joh*_*024 6

此方法使用+(表示电话号码的开头.它不需要多个空格:

>>> phones = '+35(123) 456 78 90 (123) 555 55 55  (908)985 88 89   (593)592 56 95'
>>> re.split(r' +(?=[(+])', phones)
['+35(123) 456 78 90', '(123) 555 55 55', '(908)985 88 89', '(593)592 56 95']
Run Code Online (Sandbox Code Playgroud)

这会根据一个或多个空格分隔字符串,后跟(或者+.

在正则表达式中,+匹配一个或多个空格. (?=[(+])是一个先见之明.它需要的空间应遵循无论是(+,但不消耗(+.因为我们使用的是先行而不是简单的匹配,所以是电话号码的前导(+保留部分.