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('Телефонные номера и адреса электронной почты не обнаружены.')

См.также

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