![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Когда-то у меня был коллега Дивьеш, и он пытался решить задачу парсинга HTML путем применения массива регексов, типа в цикле. Если вы знакомы с иерархией языков, то в курсе, что как ты ни соединяй регексы, а кс-грамматика не получится.
Год я уламывал Дивьеша изучить парсеры-комбинаторы, и наконец он изучил, у него случились просветление и епифания, и с тех пор он всем стал втюхивать парсеры с комбинаторами.
Сегодня смотрю на код на работе, батюшки, массив регексов. Для парсинга документов. А, знакомая картина!!! Автора зовут Нараян, он уже у нас не работает. Образование - пиэчди по компьютерным наукам из University of Texas at Austin.
Я однажды интервьюировал в Гугле кандидатку оттуда. У нее пиэчди по компьютерным наукам, и я не стал ее спрашивать, может ли она написать регекс для проверки скобок в выражениях, но у нее было "implemented binary search on the internet", и я ее спросил, как это (делит интернет пополам, как физики при ловле льва в пустыне?). Оказывается, она искала в интернете двоичные файлы.
Вот такая херня, коллеги.
no subject
Date: 2021-12-14 05:11 pm (UTC)Но логи это не язык.
no subject
Date: 2021-12-14 05:47 pm (UTC)Логи разве не на регулярном языке пишутся?
(no subject)
From:no subject
Date: 2021-12-14 05:15 pm (UTC)no subject
Date: 2021-12-14 05:15 pm (UTC)Fast and efficient for conformant HTML, slow and perfect for those that failed the fast and efficient.
no subject
Date: 2021-12-14 05:47 pm (UTC)What would you do with
<div>
inside<div>
?(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2021-12-14 05:40 pm (UTC)no subject
Date: 2021-12-14 05:50 pm (UTC)Мне надо было из почты доставать одно единственное слово, а форматов сообщений (автоматических) было несколько. Ну для каждого формата получался свой регэксп. А как надо было? Где почитать?
no subject
Date: 2021-12-14 06:35 pm (UTC)Все зависит от сложности языка.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2021-12-14 06:04 pm (UTC)no subject
Date: 2021-12-14 07:25 pm (UTC)no subject
Date: 2021-12-14 07:27 pm (UTC)Готовые решения не годятся для malformed HTML. В нашем случае полезная информация вполне могла сидеть в meta. Кроме того, у нас парсер был специализированный. Нам нужна была сущность, а не форма. Например, таблицу можно разными способами нарисовать. А нам нужно было понять, что это таблица и превратить в плоские проперти. Ну и т.д.
Короче, готовых решений нестандартных задач не существует.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2021-12-14 08:17 pm (UTC)no subject
Date: 2021-12-14 11:00 pm (UTC)Вот это правильный ответ. Было дело.
no subject
Date: 2021-12-14 08:28 pm (UTC)no subject
Date: 2021-12-14 10:22 pm (UTC)no subject
Date: 2021-12-14 09:18 pm (UTC)В реальной практике, подобная нужда это стрельба по площадям? В смысле, если выловишь 95% правильно, а 5% пропустишь , то ты уже молодец, потому как коммерческую задачу выполнил (хрен с ним с Чернобылем).
Или кто-то знает приложения, где обязательно надо 100%?
no subject
Date: 2021-12-14 10:59 pm (UTC)Ну как, жаловаться же будут пациенты.
(no subject)
From:no subject
Date: 2021-12-14 09:19 pm (UTC)а тут поиск в интернете. таких сразу в гугль надо
no subject
Date: 2021-12-15 01:35 am (UTC)— You can't parse [X]HTML with regex. ©
no subject
Date: 2021-12-15 02:03 am (UTC)Это одно из самых знаменитых и выдающихся изречений на интернетах.
(no subject)
From:(no subject)
From:nz
Date: 2021-12-15 01:48 am (UTC)Некоторые на регексах даже синтаксический анализ пытаются соорудить. Ну или хотя бы подсветку синтаксиса.
Всегда интересно, что люди подразумевают под двоичными файлами и по каким критериям их определяют.
Re: nz
Date: 2021-12-15 02:02 am (UTC)Но издеваться по телефону над черной женщиной с пиэчди было бы неэтично.
no subject
Date: 2021-12-15 06:52 pm (UTC)Сразу вспомнилось https://stackoverflow.com/a/1732454 :)
комбинаторы говоришь...
Date: 2021-12-16 05:15 pm (UTC)Re: комбинаторы говоришь...
Date: 2021-12-16 06:21 pm (UTC)А что это такое?
Re: комбинаторы говоришь...
From:Re: комбинаторы говоришь...
From:no subject
Date: 2021-12-18 02:16 pm (UTC)"регекс для проверки скобок в выражениях"
no subject
Date: 2021-12-18 11:50 pm (UTC)Вот оно, да.
no subject
Date: 2021-12-29 03:59 pm (UTC)no subject
Date: 2021-12-29 04:28 pm (UTC)Можно спросить, зачем вообще парсить, что мы хотим извлечь, и чего добиться. Я б начинал вопросы с этого.
В принципе, последовательность байтов и так уже хороша, чо там парсить.
Но если хочется выбрать из документа данные, хорошо организованные в таблицу пропертей, (а не в XML-дерево с неведомыми тегами типа <p>, <div> и прочее, то, наверно, CSS тут вообще не пристегни, а?
И тем более если речь идет о PDF.
(no subject)
From:(no subject)
From: