正则表达式之制作地址取址器
Posted 怪兽宇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式之制作地址取址器相关的知识,希望对你有一定的参考价值。
- 正则表达式很好,如果您需要匹配的文本模式很简单。但匹配复杂的文本模式可能需要长而复杂的正则表达式。您可以通过告诉re.compile()函数来忽略正则表达式字符串中的空格和注释来减轻这一点。可以通过将变量re.VERBOSE作为第二个参数传递给re.compile()来启用此“详细模式”。
而不是像这样的难以阅读的正则表达式:
phoneRegex = re.compile(r'((\d{3}|\(\d{3}\))?(\s|-|\.)?\d{3}(\s|-|\.)\d{4}
(\s*(ext|x|ext.)\s*\d{2,5})?)')
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)
- 请注意上一个示例如何使用三重引用语法(’’’)来创建多行字符串,以便您可以将正则表达式定义扩展到多行,从而使其更加清晰。
组合reignignecase,re.DOTALL和re.VERBOSE
如果要使用re.VERBOSE在正则表达式中写入注释,而且还要使用re.IGNORECASE忽略大小写,该怎么办?不幸的是,re.compile()函数只需要一个值作为第二个参数。您可以通过使用管道字符(|)组合re.IGNORECASE,re.DOTALL和re.VERBOSE变量来解决此限制,在此上下文中称为按位或运算符。
因此,如果您想要一个不区分大小写的正则表达式,并且包含匹配点字符的换行符,则将形成如下所示的re.compile()调用:
someRegexValue = re.compile('foo', re.IGNORECASE | re.DOTALL)
- 第二个参数的所有三个选项将如下所示:
someRegexValue = re.compile('foo', re.IGNORECASE | re.DOTALL | re.VERBOSE)
项目:电话号码和电子邮件地址提取器
每当你处理一个新的项目时,都可能很容易潜入编写代码。但是,通常情况下,最好退后一步,考虑更大的图景。我建议先制定一个高级别的计划,以便您的程序需要做什么。不要考虑实际的代码
-
- 将文本从剪贴板中取出。
-
- 查找文字中的所有电话号码和电子邮件地址。
-
- 将它们粘贴到剪贴板上。
现在,您可以开始考虑如何在代码中工作。代码将需要执行以下操作:
-
- 使用pyperclip模块复制和粘贴字符串。
-
- 创建两个正则表达式,一个用于匹配电话号码,另一个用于匹配电子邮件地址。
-
- 查找所有匹配,而不仅仅是两个正则表达式的匹配。
-
- 将匹配的字符串整齐地格式化为单个字符串以进行粘贴。
-
- 如果文本中没有匹配,显示某些信息.
该列表就像项目的路线图。在编写代码时,您可以单独关注这些步骤。每一步都是相当可管理的,并且表达了你已经知道如何在Python中做的事情。
步骤1:创建电话号码的正则表达式
#! 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)
# 创建电子邮件正则表达式。
# 在剪贴板文本中查找匹配。
# 将结果复制到剪贴板
- 电话号码以可选的区号开始,所以区号代码组后跟一个问号。由于区域代码只能是三位数(即\ d {3})或括号内的三位数字(即\(\ d {3} \))),因此您应该有一个连接这些部分的管道。您可以添加正则表达式注释
- 电话号码分隔符可以是空格(\ s),连字符( - )或句点(。),所以这些部分也应连接起来。正则表达式的下几个部分是简单的:三位数,后跟另一个分隔符,后跟四位数。最后一部分是可选的扩展名,由任意数量的空格组成,后跟ext,x或ext,后跟两位数到五位数。
以上是关于正则表达式之制作地址取址器的主要内容,如果未能解决你的问题,请参考以下文章