【发布时间】:2021-10-12 23:29:08
【问题描述】:
我有由字母和数字组成的字符串,例如:
Ex1:“电话 18020210 914 171 717 邮箱 43, 1003 Florvaag”
Ex2:“电话 18020210 N 0914 171 717 邮箱 43, 1003 Florvaag”
Ex3:“电话 18020210 N0914 171 717 邮箱 43, 1003 Florvaag”
我想找到像“914 171 717”和“0210 914 171”这样的数字,例如。九位数字前面可以是零,也可以是空格。
我试过了:
re.findall('[\s|0]\d{3}\s\d{3}\s\d{3}\s',Ex1)
但是这个表达式只返回 ['0210 914 171'],而我希望它返回两个数字:['0210 914 171','914 171 717']
这可能是一个快速修复,但我不知道该怎么做。
【问题讨论】:
-
[\s|0]?\d{3}\s\d{3}\s\d{3}\s?你也可以使用[\s\d]+更短更易读。 -
方括号表示一个字符类,而不是一个组。
-
尝试
re.findall('[\s|0]?\d{3}\s\d{3}\s\d{3}\s?',Ex1)时,我仍然只得到:['0210 914 171']