正则表达式之制作地址取址器

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),以日期格式替换为单一标准格式。

  • 删除敏感信息,如社会保障金或信用卡号码。

  • 查找常见的拼写错误,例如单词之间的多个空格,意外地意外重复的单词或句子结尾处的多个感叹号。

以上是关于正则表达式之制作地址取址器的主要内容,如果未能解决你的问题,请参考以下文章

C语言关于取值和取址

Python学习手册之正则表达式示例--邮箱地址提取

python实战系列之正则获取IP地址

通过 Java 正则表达式提取 semver 版本字符串的片段

Python学习笔记之正则表达式

Linux基本命令之正则表达式取ip地址