gpt4 book ai didi

Python电话号码正则表达式

转载 作者:行者123 更新时间:2023-12-04 01:56:08 38 4
gpt4 key购买 nike

我需要你的帮助:
我需要在一段文本中找到所有电话号码,所以我需要匹配不同的数字格式,例如:+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))

最佳答案

https://docs.python.org/3/library/re.html#re.findall

Findall 返回元组列表,每个元组代表一个匹配项中的组。您正在对空格进行分组,但并未对实际数字进行分组。

尝试一个将数字分组的正则表达式:

r"(\+420)?(\s*)?(\d{3})(\s*)?\(d{3})(\s*)?\(d{3})"

例如。
def detect_numbers(text):
phone_regex = re.compile(r"(\+420)?\s*?(\d{3})\s*?(\d{3})\s*?(\d{3})")
print(phone_regex.findall(text))

detect_numbers("so I need to match +420 123 123 123, also 123 123 123, also +420123123123 and also 123123123. Can y")

打印:
[('+420', '123', '123', '123'), ('', '123', '123', '123'), ('+420', '123', '123', '123'), ('', '123', '123', '123')]

然后,您可以字符串加入组匹配以获取数字,例如
def detect_numbers(text):
phone_regex = re.compile(r"(\+420)?\s*?(\d{3})\s*?(\d{3})\s*?(\d{3})")
groups = phone_regex.findall(text)
for g in groups:
print("".join(g))

detect_numbers("so I need to match +420 123 123 123, also 123 123 123, also +420123123123 and also 123123123. Can y")

打印:
+420123123123
123123123
+420123123123
123123123

关于Python电话号码正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50586697/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com