Страницы

Поиск по вопросам

понедельник, 8 июля 2019 г.

Приоритет regex перед сторонними библиотеками [закрыт]

Доброго времени, уважаемые! Меня интересует актуальность регулярных выражений в современном программировании. А именно - чему отдавать предпочтение? Писать самостоятельно шаблоны? Или использовать для этих целей специализированные библиотеки? Последние, если не ошибаюсь, не требуют знаний в области regex (regular expressions) ... И как быть, если к примеру мне куда проще работать именно с regex, а не изучать сторонние библиотеки для поиска решений, которые я могу решать и без этих библиотек? И последнее - если большинство мнений склоняется в сторону сторонних библиотек, то не означает ли это банальное не желание изучать regex? Спс, ув.


Ответ

Надо понимать, что всякий инструмент предназначен для решения определенных задач. Для разбора XML существуют библиотеки, заточенные под разбор XML. Делающие это быстро, качественно и выдающие результат в удобном для дальнейшего использования виде. Для разбора JSON существуют json_encode/json_decode. Вы же в здравом уме не будете парсить json регулярками, собирая из него массив?
В принципе никто не запрещает парсить HTML с помощью регулярных выражений. Все зависит от конкретной задачи. Например если у вас есть переменная, содержащшая строку Дядя Вася и вам надо вытащить из нее "Дядя Вася", то, конечно, глупо прикручивать библиотеку обработки DOM, а гораздо проще воспользоваться регуляркой. А вот если у вас большой HTML-документ, в котором вам надо найти множество элементов по каким-то признакам, то регулярки станут вашей надгробной эпитафией.
Регулярные выражения - очень мощный инструмент, позволяющий решить множество проблем, однако кроме плюсов у них есть и минусы, о которых очарованные неофиты обычно не задумываются:
Первый минус. В некоторых условиях регулярные выражения могут работать оооочень медленно. И такие случаи не предсказуемы. Второй минус. Зачастую, решить задачу в несколько обычных команд бывает гораздо проще и быстрее, чем с помощью регулярок. Например вот вам регулярное выражение, которое всего лишь валидирует email-адрес Третий минус. Сложность восприятия и понимания регулярки экспоненциально зависит от его длины. Вы можете понять, что делает регулярка из предыдущего пункта? Четвертый минус прямо следует из третьего. Представьте, что вы написали что-то подобное, а через пол года понадобилось чуть-чуть изменить условия проверки.

Комментариев нет:

Отправить комментарий