【发布时间】:2018-05-29 14:19:20
【问题描述】:
我需要你的帮助: 我需要在一段文本中查找所有电话号码,因此我需要匹配不同的号码格式,例如:+420 123 123 123、123 123 123、+420123123123 和/或 123123123。
如果我在搜索方法中使用正则表达式模式,它可以完美运行,但如果我使用 findall 方法,它只会返回一个空格列表。
import re
def detect_numbers(text):
phone_regex = re.compile(r"(\+420)?(\s*)?\d{3}(\s*)?\d{3}(\s*)?\d{3}")
print(phone_regex.findall(text))
【问题讨论】:
-
较长的数字总是以 420 开头吗?
-
docs.python.org/3/library/re.html#re.findall Findall 返回元组列表,每个元组代表一个匹配的组。您正在对空格进行分组,但没有对实际数字进行分组。
-
将您的组更改为非捕获组。 (?:\+420)? (?:\s*)?等等。或者捕获数字而不是空格。