Текст и повседневные инструменты · Текстовый инструментарий
Как URL и извлечение электронной почты узнают, где заканчивается адрес
· Как это работает
извлечение текста URL-адреса адреса электронной почты
Рассматриваются два трудных решения при извлечении ссылок и адресов из прозы — где заканчивается URL и насколько строгим должен быть шаблон электронной почты — и почему прагматичный шаблон превосходит полную грамматику RFC в реальном тексте.
Ссылка с приклеенной точкой — почему наивное извлечение возвращает https://example.com. и разрывает ссылку
В заметках о встречах часто в конце предложения помещается полезная ссылка: `Agenda: https://example.com/roadmap.` Поиск, допускающий все символы, не являющиеся пробелами, будет включать последнюю точку. Видимый текст выглядит разумным, но извлеченное значение больше не соответствует адресу, которым автор намеревался поделиться или посетить его повторно.
ToolAcre сначала находит последовательность HTTP или HTTPS, затем удаляет конечные точки, запятые, точки с запятой, двоеточия, восклицательные и вопросительные знаки. Очистка намеренно привязывается к границе совпадения, а не применяется по всему документу. Пунктуация в любом месте URL остается доступной, если это позволяет исходный шаблон.
Ссылка с точкой: почему извлечение должно исключать конечные знаки препинания
Шаблон URL начинается только с `http://` или `https://` и продолжается до тех пор, пока не появится пробел или один из нескольких закрывающих разделителей. Кавычки, угловые скобки, закрывающая скобка и закрывающая квадратная скобка останавливают совпадение. Это правило позволяет такой прозе, как `(https://example.com/notes)`, возвращать адрес без окружающих скобок.
Это практическое граничное правило, а не общий анализ всех возможных URI. Открывающая скобка может оставаться внутри совпадения, в то время как закрывающая скобка завершает его, поэтому адрес, собственный путь которого действительно содержит этот символ, может быть сокращен. Экстрактор предпочитает общие границы прозы и оставляет необычные случаи на рассмотрение вручную.
Насколько строгим должно быть сопоставление электронной почты — что технически разрешает RFC 5322 и почему сопоставление всего этого дает худшие результаты для реального текста
Извлечение электронной почты требует аналогичного компромисса. Он ищет буквы, цифры и знакомые знаки препинания почтового ящика перед `@`, затем доменную последовательность, за которой следует точка и как минимум две буквы. Этот шаблон улавливает обычные адреса, включенные в заметки, не пытаясь воспроизвести каждую конструкцию, допускаемую полной грамматикой электронной почты.
Более узкий шаблон полезен, поскольку извлечение и проверка отвечают на разные вопросы. Извлечение идентифицирует вероятные контактные данные в неструктурированном тексте; он не устанавливает, что почтовый ящик существует, принимает почту или принадлежит указанному лицу. Рассматривайте результат как список, доступный для просмотра, особенно если рядом с ним появляются знаки препинания или необычный синтаксис почтового ящика.
Дедупликация и порядок — одна копия каждого адреса в порядке первого появления, поэтому список отражает источник.
Для URL-адресов и адресов электронной почты ToolAcre удаляет дубликаты с помощью `Set`. Наборы JavaScript сохраняют порядок вставки, поэтому первое вхождение определяет, где элемент появится в результате, а последующие идентичные совпадения исчезают. Таким образом, вывод следует за источником сверху вниз, а не упорядочивает контакты или ссылки в алфавитном порядке без разрешения.
Равенство точное. `https://example.com` и `https://example.com/` остаются отдельными, как и адреса электронной почты, регистр букв которых различается. Экстрактор не нормализует домены, не удаляет фрагменты URL и не решает, что два места назначения эквивалентны. Эти изменения могут намеренно объединить отдельный текст, поэтому любая дальнейшая нормализация относится к отдельному проверенному шагу.
Числа тоже: вытягивание числовых значений из прозы и почему десятичные разделители и разделители тысяч делают «число» менее очевидным, чем кажется
Извлечение чисел допускает необязательный знак минус, одну или несколько цифр и необязательную десятичную часть, представленную точкой. Он может извлечь `-12`, `48` и `3.75` из прозы. В отличие от URL и извлечения электронной почты, он возвращает каждое совпадение напрямую, поэтому повторяющиеся значения остаются повторяющимися и сохраняют количество их вхождений.
Сгруппированные и локализованные формы обнажают ограничения этого компактного правила. `1,250` возвращается как `1` и `250`, а `3,5` также разделяется, а не интерпретируется как десятичная запятая. Знаки валюты, показатели степени и ведущие знаки плюс не являются частью совпадения. Прочтите ближайший текст, прежде чем придавать значение любому извлеченному числу.
Числа тоже: целые и десятичные числа со знаком, без рассмотрения сгруппированных значений как одного числа.
Попробуйте следующие примечания: `Email sam@example.com, then review https://example.com/plan. Backup: sam@example.com. Budget -12.5; seats 24. Reference (https://example.com/help).` Извлечь электронные письма возвращает одно `sam@example.com`. Извлечение URL-адресов возвращает адреса плана и справки без точки предложения или закрывающей скобки, именно в этом порядке.
Сканирование вручную должно обнаружить два появления электронного письма, но один уникальный результат электронного письма, два отдельных появления URL и два совпадения номеров. Извлечение номеров возвращает `-12.5` и `24`; цифры внутри доменов-примеров не добавляют совпадений, поскольку их нет. Эта проверка отделяет количество вхождений от дедуплицированных списков контактов и ссылок.
Чего это не касается — проверка того, что адрес действительно существует, а также экзотические, но действительные адреса, которые прагматичный шаблон пропускает.
Соответствующее электронное письмо представляет собой только текст, имеющий форму реализованного шаблона. ToolAcre не опрашивает почтовые серверы, не отправляет тестовые сообщения и не проверяет записи домена. Таким образом, кажущаяся правдоподобной опечатка может не быть извлечена, а необычный, но пригодный для использования адрес может быть пропущен. Прежде чем полагаться на список, подтвердите важные контакты через соответствующий доверенный канал.
Извлечение URL также не запрашивает страницу, не следует по перенаправлениям и не проверяет, является ли пункт назначения безопасным или доступным. Также требуется явный префикс HTTP или HTTPS, поэтому пустой `example.com` не возвращается. Эти ограничения делают извлечение локальным и предсказуемым, но делают проверку человеком частью любого последующего рабочего процесса.
Вывод: кнопки извлечения Text Toolkit явно делают эти компромиссы и дают вам чистый, дедуплицированный список в вашем браузере.
Кнопки извлечения превращают смешанный блок текста в совпадения в браузере, разделенные новой строкой. URL-адреса и электронные письма используют прагматичные шаблоны, обрезаются или останавливаются на общих границах и возвращают уникальные значения в порядке первого появления. В числах используется меньший десятичный шаблон со знаком и сохраняются дубликаты, что отражает другой функциональный контракт, а не одну универсальную политику извлечения.
Вставьте только те заметки, которые вам нужны, запустите «Извлечь URL-адреса» и «Извлечь электронные письма» отдельно и сравните каждый список с источником, прежде чем копировать его дальше. Чистый вывод исключает повторяющееся сканирование, а документированные границы показывают, где суждение остается необходимым. В случае необычного синтаксиса сохраняйте исходный отрывок рядом с извлеченным результатом во время просмотра.