У меня много текста, который мне нужно обработать для получения действительных URL-адресов.
Ввод смутно HTMLish, в основном это HTML.Тем не менее, это не совсем действительный HTML.
Я * пытался сделать это с помощью регулярных выражений и у меня возникли проблемы.
Прежде чем вы скажете (или, возможно, закричите - япрочитал другие вопросы HTML + regex) " использовать парсер ", есть одна вещь, которую вам нужно учитывать:
Файлы, с которыми я работаю, имеют размер около 5 ГБ
Я не знаю ни одного парсера, который мог бы справиться с этим без сбоев или нескольких дней.Кроме того, тот факт, что, хотя текстовое содержимое является в значительной степени html, но не обязательно valid html, означает, что для него потребуется очень терпимый синтаксический анализатор.Наконец, не все ссылки обязательно должны быть в <a>
тегах (некоторые могут быть просто открытым текстом).
Учитывая то, что меня не очень интересует структура документа, есть ли лучшие альтернативы извлечения ссылок WRT?
Прямо сейчас я использую регулярное выражение:
\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))
(в grep -E)
, но даже после этого я сдался, дав ему поработать около 3 часов.
Существуют ли существенные различия в производительности двигателя Regex?Я использую командную строку MacOS grep
.Если есть другие совместимые реализации с лучшей производительностью, это может быть вариантом.
Я не слишком беспокоюсь о языке / платформе, хотя MacOS / командная строка были бы хорошими.