Работа, которая заставила меня построить это, прибыла как пересылаемая цепочка электронной почты глубиной в сорок сообщений Клиент хотел единый список всех, кто был скопирован в шестимесячной ветке, чтобы они могли перенести группу в надлежащий список рассылки Каждый адрес был там, похоронен в To: а Cc: строки, в подписях, в цитируемых ответах, иногда три раза. Прокрутка и копирование вручную собирались занять полдень, и я все равно пропустил несколько и дублировал еще несколько. На самом деле мне нужно было что-то, что прочитало бы всю капельку текста, нашло бы в ней каждый адрес электронной почты, выбросило дубликаты и вручило бы мне чистый список. Это экстрактор электронной почты, и это руководство объясняет, как это работает и почему скучные детали соответствующего вопроса.
TL;DR: Экстрактор электронной почты сканирует блок текста и извлекает каждый содержащийся в нем адрес электронной почты, возвращая дублированный список, который вы можете скопировать. инструмент Toolz идет дальше, извлекая URL-адреса, номера телефонов и адреса IPv4 из одного и того же текста с одним и тем же движком. Он совпадает с тщательно подобранными регулярными выражениями, бесчувственно сворачивает дубликаты случаев и может сортировать и занижать выходные данные. Все работает на стороне клиента: нет загрузки, нет регистрации, работает в автономном режиме.
Я создаю продукты SaaS на Laravel и React и отправляю плагины WordPress, и удивительный объем этой работы - превращение неструктурированного текста в структурированные списки. поддержка экспорта входящих ящиков, очищенная страница, файл журнала, вставленный документ: все они смешивают нужные данные с шумом вокруг него. Вытащить адреса, ссылки или IP из этого шума - небольшая задача, которую вы выполняете постоянно, и делать это с регулярным выражением, которое вы наполовину запоминаете и перепечатываете каждый раз, - это именно те трения, которые должен удалить инструмент браузера. Итак, это руководство. Мне бы хотелось, чтобы во второй половине дня цепочка из сорока сообщений приземлилась у меня на коленях.
Что такое экстрактор электронной почты?
Экстрактор электронной почты - это инструмент, который считывает свободный текст и возвращает каждый адрес электронной почты внутри него в виде списка. Вы вставляете блок текста, будь то поток электронной почты, веб-страница, дамп CSV, журнал чата или страница исходного кода, и инструмент находит каждый адрес, используя шаблон, распознающий форму электронного письма: локальную часть, знак at и домен, заканчивающийся действительным доменом верхнего уровня. Вместо того, чтобы читать текст самостоятельно и копировать адреса по одному, вы получаете весь набор сразу, с удаленными дубликатами.
Инструмент экстрактор электронной почты это намеренно больше, чем электронные письма. один и тот же механизм сканирования может извлечь URL-адреса http и https, номера телефонов и адреса IPv4, потому что они являются одним и тем же классом проблем: найти каждое появление известного шаблона в стене текста и перечислить его чисто. Это делает его общей утилитой извлечения, а не инструментом с одним трюком. Основная идея постоянна для всех четырех типов. Определите точный шаблон того, как выглядит действительное совпадение, отсканируйте текст для каждого непересекающегося события, затем очистите, удалите дублирование и, при необходимости, отсортируйте результаты в список, который вы можете вставить, где вам это нужно.
Почему бы просто не взглянуть на него или не использовать find-in-page?
Потому что оба метода терпят неудачу в наиболее важных путях. Чтение текста и копирование адресов вручную происходит медленно, и, что еще хуже, это ненадежно: вы пропускаете адрес, спрятанный внутри блока подписи, вы дважды копируете один и тот же из цитируемого ответа, и у вас нет возможности узнать, сколько вы должны были оказаться. чем больше входные данные, тем хуже шансы, а входные данные, которые необходимо извлечь, обычно большие.
Браузер найти-в-странице не лучше для этого. он выделяет совпадения для строки, которую вы уже знаете, но весь смысл извлечения заключается в том, что вы не знаете адреса заранее, поэтому нечего искать. что вам нужно, так это шаблон, который соответствует форме электронного письма независимо от его точных букв, что именно обеспечивает регулярное выражение. правильно написать это выражение - это его собственный небольшой навык, и получить его немного неправильно означает либо отсутствие действительных адресов, либо лов мусора, который выглядит только как один. специальный экстрактор выпекает проверенный шаблон, чтобы вам никогда не приходилось его перепечатывать, и соединяет его с дедупликацией, чтобы список, который вы копируете, был списком, которому вы можете доверять. если вы хотите понять или скорректировать сам шаблон, то Тестер регулярного выражения позволяет вставлять собственное выражение и смотреть, как оно совпадает с образцом текста в режиме реального времени.
Насколько точно соответствует электронное письмо?
Это вопрос, который решает, полезен или раздражает экстрактор, поэтому стоит быть точным Формат адреса электронной почты определяется RFC 5322, и полная грамматика, как известно, барочная. она позволяет цитируемые локальные части с пробелами, комментарии в скобках и другие формы, которые технически действительны и никогда не появляются в реальных данных. регулярное выражение, которое пытается соответствовать всему RFC, огромно, и на практике оно приносит больше вреда, чем пользы, потому что оно начинает соответствовать строкам, которые никогда не примет ни один почтовый сервер.
Экстрактор Toolz использует прагматическое подмножество, на котором остановилась индустрия: локальная часть букв, цифр и общей пунктуации, знак и пунктирный домен, который заканчивается доменом верхнего уровня, состоящим как минимум из двух букв. Это та же форма, которую используют большинство библиотек проверки, и она соответствует адресам, которые люди на самом деле имеют, отвергая шум. Это преднамеренная торговля. Вы отказываетесь от сопоставления экзотических форм, которых не происходит, чтобы избежать ложных срабатываний в формах, которые выглядят как электронные письма, но не являются таковыми. Для извлечения адресов из реальных документов, а это вся работа, что торговля является правильной. Инструмент честен и в этом отношении: те же рассуждения применимы и к телефонным номерам, где нет единого глобального формата, поэтому шаблон намеренно широк и иногда ловит длинное число, которое не является номером телефона, поэтому просмотр результатов телефона стоит мгновения.
Как извлечь электронные письма из текста с помощью инструмента?
Поток занимает около десяти секунд. вставьте текст в поле ввода или нажмите "Загрузить образец", чтобы увидеть обработанный пример, содержащий электронные письма, URL-адреса, номера телефонов и IP-адреса, смешанные вместе.
Выберите, что извлечь, используя ряд кнопок вверху: адреса электронной почты, URL-адреса, номера телефонов, адреса IPv4, или номера. инструмент применяет шаблон сопоставления для этого типа и игнорирует все остальное. Затем установите параметры списка.Оставить & quot;Удалить дубликаты& quot; на свернуть повторяющиеся совпадения в одну запись, что почти всегда является тем, что вы хотите.Включить & quot;Сортировать & quot; упорядочить список в алфавитном порядке, или по значению, когда вы извлекаете числа.Включите & quot;Lowercase& quot; чтобы нормализовать электронные письма и URL-адреса так [email protected] а [email protected] рассматриваются как один адрес. выберите способ объединения результатов: новая строка для вертикального списка, запятая для ячейки CSV или a To: поле, пробел или точка с запятой для почтовых клиентов, которые этого ожидают.
Нажмите "Извлечь", и результаты отобразятся с подсчетом того, сколько совпадений было найдено и сколько дубликатов было удалено. Скопируйте список и вставьте его туда, куда ему нужно. Это весь цикл, и поскольку он запускается мгновенно, вы можете переключаться между типами извлечения в одном тексте, чтобы извлекать электронные письма, затем URL-адреса, затем IP-адреса, не вставляя ничего повторно.
Что я могу извлечь и когда я буду использовать каждое?
Четыре типа извлечения охватывают данные, которые чаще всего скрываются внутри текста. Вот что соответствует каждому из них и для какой ситуации он предназначен.
| тип | спичка | Типичное использование |
|---|---|---|
| Адреса электронной почты | [email protected] в практическом подмножестве RFC |
Создание списка рассылки из темы, извлечение контактов из экспорта |
| URL-адреса | http:// а https:// ссылки, конечная пунктуация обрезана |
Сбор каждой ссылки со страницы или документа для аудита |
| Номера телефонов | Запускается из более чем 7 цифр с пробелами, черточками, точками или круглыми скобками | Сбор контактных номеров из скобленного или вставного текста |
| Адреса IPv4 | Пунктирные квадрицепсы, каждый октет которых ограничен 0-255 | Вытягивание адресов из файла журнала или дампа конфигурации |
| чисел | Знаковые целые и десятичные числа с тысячами разделителей | Извлечение цифр из отчета или таблицы, вставленной в текст |
Типы электронной почты и URL-адреса - это те, к которым я обращаюсь большинство, обычно вместе: извлекайте электронные письма, чтобы создать список контактов, затем переключайтесь на URL-адреса, чтобы проверять каждую ссылку, одни и те же ссылки на документы. Тип IPv4 зарабатывает свое место, когда я читаю журналы сервера и хочу уникальный набор адресов, которые попадают в конечную точку, которая естественным образом соединяется с Анализатор URL когда мне тогда нужно разбить эти запросы дальше. тип номера является нечетным, но действительно удобным для извлечения цифр из отчета, который был вставлен в виде обычного текста вместо электронной таблицы. Что бы вы ни выбрали, варианты удаления дублирования и сортировки работают одинаково, поэтому на выходе всегда получается чистый, упорядоченный список, а не необработанные совпадения.
Как на самом деле здесь работает дедупликация?
Дедупликация звучит тривиально, пока вы не рассмотрите обсадную колонну. Тот же человек & #39;s адрес может выглядеть как [email protected] в одной подписи и [email protected] в цитируемом ответе, и наивное ded-дубликат, который сравнивает строки точно сохранит оба Это неправильно: e-mail локальные части нечувствительны к регистру в каждой практической почтовой системе, а домены нечувствительны к регистру по определению. Таким образом, экстрактор сравнивает электронные письма и URL-адреса case-insensistively при решении, являются ли два совпадения одинаковыми, что означает, что эти два написания сворачиваются к одной записи, даже если вы не включили строчный вариант.
Инструмент также говорит вам, что он сделал. счетчик выше результатов показывает как сколько совпадений он нашел в общей сложности и сколько дубликатов он удалил, так что вы никогда не догадываетесь, сократился ли список из-за dдублирования или потому что вход был меньше, чем вы думали, Для чисел и IP адресов, где обсадная колонка не имеет значения, сравнение является точным. это тот вид детали, который невидим, когда он работает и бесит, когда это не так, поэтому стоит получить право, а не оставить на равнине Set из необработанных строк. Если ваша работа действительно связана с тем, какие ценности появляются в одном списке, но не в другом, а не вытаскивает их из прозы сравнить два списка инструмент устанавливает арифметику столбцов и лучше подходит для этого конкретного вопроса.
Безопасно ли извлекать из конфиденциального текста онлайн?
Для этого инструмента, да, и причина в том, как он построен, а не политика вы должны принять на веру. текст, который вы вставляете, сканируется полностью в вашем собственном браузере с JavaScript. нет загрузки, ни сервера туда и обратно, и ничего не регистрируется или не хранится. вы можете подтвердить это, открыв свой браузер 's вкладка сети и нажав Выдержка: ни один запрос не покидает страницу. После загрузки страницы вы можете выйти в автономный режим, и он продолжает работать.
Это имеет большее значение для извлечения, чем для почти любого другого вида инструмента, потому что текст, который вы вставляете часто полон именно тех данных, которые вы не хотели бы утекать. потоки электронной почты содержат частные адреса, файлы журналов содержат внутренние IP-адреса и имена хостов, а вставленные документы содержат номера телефонов и имена. экстрактор, который загружает этот текст на сервер для его обработки, каким бы благим ни было намерение, превращает вашу личную переписку в кого-то другого и #39;s журнал сервера. Обработка на стороне клиента устраняет риск в корне: текст никогда не покидает вашу машину. Это по умолчанию является преднамеренным для каждого инструмента на Toolz.dev, и я изложил полный аргумент в руководство по конфиденциальности данных для онлайн-инструментов если вы хотите рассуждения в глубине Для более широкого взгляда на то, как эти небольшие утилиты вписываются вместе в рабочий комплект, мой Руководство по инструментам повышения производительности разработчика ходит по кусочкам.
Какие пределы стоит знать?
Быть прямо о пределах является частью доверия к инструменту, так что вот честные края. шаблон электронной почты соответствует практическому подмножеству RFC 5322, а не полной грамматики, поэтому технически допустимый, но экзотический адрес с цитируемой локальной частью или комментарием будет пропущен. это преднамеренный выбор, чтобы избежать ложных срабатываний, и он влияет, по сути, не на реальный адрес, но это предел, и вы должны знать, что он существует. Номера телефонов являются самым свободным из пяти типов, потому что универсального формата нет; шаблон ищет серию из семи или более цифр с общими разделителями, что означает, что он может иногда поймать длинный идентификатор, который не является номером телефона, поэтому взгляд на результаты телефона стоит того, чтобы второй он занял.
Экстрактор также работает над текстом, а не над двоичными файлами. Если у вас есть PDF или документ Word, скопируйте его текст и вставьте его; инструмент не может прочитать сам формат файла. И поскольку все работает в памяти браузера, действительно огромный ввод будет ограничен вашим браузером, а не инструментом, хотя для электронных писем, ссылок и IP-адресов люди фактически извлекают этот потолок намного выше того, что вы достигнете. Ни один из этих пределов не укусит при нормальном использовании. Знать их - это просто разница между уверенным использованием инструмента и удивлением краевым случаем.
Часто задаваемые вопросы
Как извлечь адреса электронной почты из текста? Вставьте текст в экстрактор электронной почты и оставьте набор типов на адреса электронной почты. он сканирует текст с шаблоном электронной почты, перечисляет каждый найденный адрес, удаляет дубликаты и позволяет скопировать чистый список. Никакой регистрации или загрузки не требуется, и он работает в автономном режиме после загрузки.
Может ли он также извлечь URL-адреса и номера телефонов? Да. переключите тип извлечения на URL-адреса, номера телефонов, адреса IPv4 или номера. один и тот же механизм применяет разные шаблоны для каждого типа, поэтому один инструмент обрабатывает несколько заданий извлечения из одного и того же блока текста, не вставляя его повторно.
Удаляет ли он дубликаты электронных писем? Да, когда опция удаления дубликатов включена. Повторные совпадения сворачиваются до одной записи, и инструмент сообщает, сколько дубликатов было удалено. электронные письма и URL-адреса сопоставляются без учета регистра, поэтому один и тот же адрес в оболочке с разными буквами рассматривается как один.
Насколько точно соответствует электронное письмо? Шаблон соответствует практическому подмножеству адресов электронной почты, видимых в реальных данных: локальная часть, знак at и пунктирный домен, оканчивающийся на допустимый домен верхнего уровня. он не реализует полную грамматику RFC 5322, которая позволяет экзотические формы, которые никогда не появляются на практике и будут создавать ложные совпадения на строках, которые выглядят только как электронные письма.
Почему некоторые номера телефонов совпадают странно? Номера телефонов не имеют единого глобального формата, поэтому шаблон ищет серию из семи или более цифр с пробелами, черточками, точками или круглыми скобками между ними. Это намеренно широко, а это означает, что он может иногда улавливать длинное число, которое не является номером телефона, поэтому стоит просмотреть результаты при извлечении номеров телефонов из смешанного текста.
Могу ли я отсортировать извлеченный список? Да. включите опцию сортировки, чтобы упорядочить список в алфавитном порядке или по числовому значению при извлечении чисел. Объедините его с опцией удаления дубликатов, чтобы получить чистый, упорядоченный список без дубликатов, готовый к копированию.
В каких форматах я могу скопировать результаты? Вы можете присоединяться к матчам с новой строкой, запятой, пробелом или точкой с запятой Выберите новую строку для вертикального списка, запятую для ячейки CSV или поля To и точку с запятой для некоторых почтовых клиентов. счетчик над выводом показывает, сколько совпадений было извлечено.
Извлеченные данные загружаются куда-нибудь? Нет. текст сканируется локально в вашем браузере с помощью JavaScript. Ничего не передается, не регистрируется и не сохраняется, и инструмент продолжает работать в автономном режиме после загрузки, что вы можете подтвердить, просматривая вкладку сети во время извлечения.



