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

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

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


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

Код

 1 import pyperclip, re
 2 
 3 # Создание регулярного выражения для номеров телефонов
 4 phoneRegex = re.compile(r'''(
 5     (\d{3}|\(\d{3}\))? # территориальный код
 6     (\s|-|\.)?         # разделить
 7     (\d{3})              # первый 3 цифры
 8     (\s|-|\.)          # разделить
 9     (\d{4})              # последние 4 цифры
10     (\s*(ext|x|ext.)\s*(\d{2,5}))?  # добавочный номер
11     )''', re.VERBOSE)
12 
13 # Создание регулярного выражения для адресов электронной почты
14 emailRegex = re.compile(r'''(
15     [a-zA-Z0-9._%+-]+      # имя пользователя
16     @                      # символ @
17     [a-zA-Z0-9.-]+         # имя домена
18     (\.[a-zA-Z]{2,4}){1,2} # остальная часть
19     )''', re.VERBOSE)
20 
21 # Поиск соответствий в тексте, содержащемся в буфере обмена
22 text = str(pyperclip.paste())
23 
24 matches = []
25 for groups in phoneRegex.findall(text):
26     phoneNum = '-'.join([groups[1], groups[3], groups[5]])
27     if groups[8] != '':
28         phoneNum += ' x' + groups[8]
29     matches.append(phoneNum)
30 for groups in emailRegex.findall(text):
31     matches.append(groups[0])
32 
33 # Копирование результатов в буфер обмена
34 if len(matches) > 0:
35     pyperclip.copy('\n'.join(matches))
36     print('Скопировано в буфере обмена:')
37     print('\n'.join(matches))
38 else:
39     print('Телефонные номера и адреса электронной почты не обнаружены.')

См.также

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