python - 为什么我的正则表达式不能在网页上接听电话号码?
问题描述
嘿伙计们,所以我正在使用 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 位和分机(如果有的话)。然而,当我运行此代码时,它会返回:
- 不在范围内 元组索引超出范围
- 不在范围内 元组索引超出范围
- 不在范围内 元组索引超出范围
- 复制到剪贴板:
- .-.-
- .-.-
- .-.-
- info@nostarch.com
- media@nostarch.com
- Academic@nostarch.com
- 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/
解决方案
推荐阅读
- php - WordPress中的页面特征图像问题
- python - 如何在不附加模块路径的情况下导入不同路径的模块?
- node.js - 如何创建旧版本的 Azure Web Bot?
- sql - 雪花视图 - 组语法编译错误
- flutter - 意外的 DropdownButtonFormField 行为
- javascript - 将事件添加到所有元素的正确方法是什么?
- python - 计划任务不会在 Windows 10 中为“运行用户是否登录”选项运行 .py 文件
- typescript - 如何编写 d.ts 声明文件以在 typescript 中导入默认类和命名导出?
- excel - VBA 宏如果单元格包含 #N/A 然后在以下列中输入文本
- python - AWS Lambda (Python Zappa) 了解日志