Python:Примеры/Поиск телефонных номеров и адресов электронной почты в буфере обмена

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Проверка/Оформление/Редактирование: Мякишев Е.А.


Поиск телефонных номеров и адресов электронной почты в буфере обмена

Код

import pyperclip, re

# Создание регулярного выражения для номеров телефонов
phoneRegex = re.compile(r'''(
    (\d{3}|\(\d{3}\))? # территориальный код
    (\s|-|\.)?         # разделить
    (\d{3})              # первый 3 цифры
    (\s|-|\.)          # разделить
    (\d{4})              # последние 4 цифры
    (\s*(ext|x|ext.)\s*(\d{2,5}))?  # добавочный номер
    )''', re.VERBOSE)

# Создание регулярного выражения для адресов электронной почты
emailRegex = re.compile(r'''(
    [a-zA-Z0-9._%+-]+      # имя пользователя
    @                      # символ @
    [a-zA-Z0-9.-]+         # имя домена
    (\.[a-zA-Z]{2,4}){1,2} # остальная часть
    )''', re.VERBOSE)

# Поиск соответствий в тексте, содержащемся в буфере обмена
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])

# Копирование результатов в буфер обмена
if len(matches) > 0:
    pyperclip.copy('\n'.join(matches))
    print('Скопировано в буфере обмена:')
    print('\n'.join(matches))
else:
    print('Телефонные номера и адреса электронной почты не обнаружены.')

См.также

Внешние ссылки