当前位置:嗨网首页>书籍在线阅读

28-第1步_为电话号码创建一个正则表达式

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

第1步:为电话号码创建一个正则表达式

首先,你需要创建一个正则表达式来查找电话号码。创建一个新文件,输入以下代码,保存为phoneAndEmail.py:

#! python3
# phoneAndEmail.py - Finds phone numbers and email addresses on the clipboard.
import pyperclip, re
phoneRegex = 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)
# TODO: Create email regex.
# TODO: Find matches in clipboard text.
# TODO: Copy results to the clipboard.

TODO 注释仅仅是程序的框架。当编写真正的代码时,它们会被替换掉。

电话号码从一个“可选的”区号开始,所以区号分组跟着一个问号。因为区号可能只是3个数字(即 \d{3} ),或括号中的3个数字(即 \(\d{3}\) ),所以应该用管道符号连接这两部分。可以对这部分多行字符串加上正则表达式注释 # area code ,帮助你记忆 (\d{3}|(\d{3}\))? 要匹配的是什么。

电话号码分隔字符可以是空格( \s )、短横线( - )或句点( . ),所以这些部分也应该用管道符号连接。这个正则表达式接下来的几部分很简单:3个数字,另一个分隔符,然后是4个数字。最后的部分是可选的分机号,包括任意数目的空格,接着 extxext. ,再接着是2~5位数字。

注意: 很容易混淆包含带括号( )和转义括号(、)的分组的正则表达式。如果收到“missing ), unterminated subpattern”错误信息,请记住再次检查是否使用了正确的括号。