正则表达式之制作地址取址器
Posted 怪兽宇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式之制作地址取址器相关的知识,希望对你有一定的参考价值。
创造一个email 地址
#! python3
# phoneAndEmail.py - 查找剪贴板上的电话号码和电子邮件地址。
import pyperclip, re
phoneRegex = re.compile(r'''(
---snip---
# Create email regex.
emailRegex = re.compile(r'''(
[a-zA-Z0-9._%+-]+ # 用户名❶
@ # @ 符号
[a-zA-Z0-9.-]+ # 域名
(\.[a-zA-Z]{2,4})
)''', re.VERBOSE)
#在剪贴板文本中查找匹配。
#将结果复制到剪贴板
域名和用户名用@符号❷分隔。域名❸只有字母,数字,句点和连字符稍稍放宽一些,[a-zA-Z0-9.-]。最后将是“dot-com”部分(技术上被称为顶级域名),这真的可以是任何东西。这是两到四个字符。
步骤3:查找剪贴板文本中的所有匹配项
#! python3
# phoneAndEmail.py - Finds phone numbers and email addresses on the clipboard.
import pyperclip, re
phoneRegex = re.compile(r'''(
--snip--
# Find matches in clipboard text.
text = str(pyperclip.paste())
matches = [] #❶
for groups in phoneRegex.findall(text): #❸
phoneNum = '-'.join([groups[1], groups[3], groups[5]])
if groups[8] != '':
phoneNum += ' x' + groups[8]
matches.append(phoneNum)
for groups in emailRegex.findall(text): #❷
matches.append(groups[0])
# TODO: 将结果复制到剪贴板。
每个匹配有一个元组,每个元组包含正则表达式中每个组的字符串。请记住,组0与整个正则表达式匹配,因此元组的索引0处的组是您感兴趣的组。
步骤4:将匹配加入剪贴板的字符串
#! python3
# phoneAndEmail.py - Finds phone numbers and email addresses on the clipboard.
--snip--
for groups in emailRegex.findall(text):
matches.append(groups[0])
# Copy results to the clipboard.
if len(matches) > 0:
pyperclip.copy('\n'.join(matches))
print('Copied to clipboard:')
print('\n'.join(matches))
else:
print('No phone numbers or email addresses found.')
运行程序
例如,将Web浏览器打开到Nostarch Press联系页面http://www.nostarch.com/contactus.htm,按CTRL-A选择页面上的所有文本,然后按CTRL-C复制它到剪贴板。当您运行此程序时,输出将如下所示:
Copied to clipboard:
800-420-7240
415-863-9900
415-863-9950
info@nostarch.com
media@nostarch.com
academic@nostarch.com
help@nostarch.com
类似程序的想法
识别文本模式(并且可能用sub()方法代替它们)具有许多不同的潜在应用。
查找以http://或https://开头的网址。
以不同的日期格式清理日期(例如3/14/2015,03-14-2015和2015/3/14),以日期格式替换为单一标准格式。
删除敏感信息,如社会保障金或信用卡号码。
查找常见的拼写错误,例如单词之间的多个空格,意外地意外重复的单词或句子结尾处的多个感叹号。
以上是关于正则表达式之制作地址取址器的主要内容,如果未能解决你的问题,请参考以下文章