我正在阅读“使用python自动化无聊的东西”。现在,我停留在第7章(正则表达式部分)。我想为乌克兰电话号码实现一个用于美国电话号码的模板。
乌克兰数字可以以不同的格式出现,例如:+ 380445371428,+ 38(044)5371428,+ 38(044)537 14 28,+ 38(044)537-14-28,+ 38(044)537.14.28 ,044.537.14.28、0444351428、044-537-1428,(044)537-1428、044 537-1428等。
以下是我的实现,但不是很正确。我需要什么?
当我复制一些网站页面时,我从复制的所有信息中都提取了以(044-537-1428)格式显示的乌克兰编号。
phoneRegex = re.compile(r'''(
(^\+38?) # area code(not necessarily)
(\d{3}|\(\d{3}\)) # carrier code(usually starts with 0
(\s|-|\.)? # separator
(\d{3}|\(\d{3}\)) # first 3 digits
(\s|-|\.) # separator
(\d{4}) # last 4 digits
(\s*(ext|x|ext.)\s*(\d{2,5}))? # extension
)''', re.VERBOSE)
美国电话号码的模板(根据该书)如下所示
phoneRegex = re.compile(r'''(
(\d{3}|\(\d{3}\))?
(\s|-|\.)
(\d{3})
(\s|-|\.)
(\d{4})
(\s*(ext|x|ext.)\s*(\d{2,5}))?
)''', re.VERBOSE)
最佳答案
我不熟悉python,但我认为遵循正则表达式可以解决您的问题
((\+38)?\(?\d{3}\)?[\s\.-]?(\d{7}|\d{3}[\s\.-]\d{2}[\s\.-]\d{2}|\d{3}-\d{4}))
您可以检查它是否工作here
关于python - 乌克兰电话号码的正则表达式模板,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58248441/