首页 > 解决方案 > 为什么我的正则表达式不能在网页上接听电话号码?

问题描述

嘿伙计们,所以我正在使用 python 正则表达式构建一个电话和电子邮件提取器,虽然它适用于电子邮件,但它不适用于电话号码。

在剪贴板上查找电话号码匹配的代码如下:

for groups in phoneR.findall(text):
    phoneNum = '-'.join([groups[1], groups[3], groups[5]])
    try:
        if groups[8] != '':
            phoneNum += ' x' + groups[8]
    except IndexError as i:
        print('not in range', i)
    matches.append(phoneNum)

组 1、3、5 和 8 应该分别是区号、前 3 位、后 4 位和分机(如果有的话)。然而,当我运行此代码时,它会返回:

  1. 不在范围内 元组索引超出范围
  2. 不在范围内 元组索引超出范围
  3. 不在范围内 元组索引超出范围
  4. 复制到剪贴板:
  5. .-.-
  6. .-.-
  7. .-.-
  8. info@nostarch.com
  9. media@nostarch.com
  10. Academic@nostarch.com
  11. info@nostarch.com

我已经用 try & 打印了错误,除了显示更多信息。我不明白为什么 .-.- 出现而不是实际的电话号码,所以我将在此处将代码发布到电话正则表达式以及我使用的测试链接。如果有人可以提供一些见解,将不胜感激:

# phone regex
phoneR = re.compile(r'''
(\d{3}|\d{3}\))?        # area code
(\s|-|\.)?      # separator
(\d{3})     # first 3 digits
(\s|-|\.)       # separator
(\d{4})     # last 4 digits
(\s*(ext|x|ext.)\s*(\d{2,5}))?      # extension
''', re.VERBOSE)

这是测试链接: https ://nostarch.com/contactus/

标签: pythonregexextractorpyperclip

解决方案


推荐阅读