我正在阅读“使用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/

10-12 16:55