
Pavel
11.05.2019
23:54:21
Это называется не вера а научное знание. Достаточно ознакомиться с тем как они устроены и какой мат. аппарат обеспечивает работу, чтобы бояться их всегда.
И ситуаций подобных этой https://www.regular-expressions.info/catastrophic.html
А много ли людей на глаз может оценить вычислительную сложность регулярки?
Или даже вообще этим занимается _впринципе_ при разработке на пшп ?

Google

Pavel
12.05.2019
00:00:53
Да именно про это
Там где можно использовать explode не нужно использовать pcre
И когда ты пишешь очередную регулярку то ты даже не представляешь, будет она работать быстро, или же упадет в миллионы шагов пробега по конечноу автомату
Это уже демагогия. Надо по ситуации решать что лучше а что нет.
Заметь, регулярка там вполне себе оптимальная, а вот выполняется крайне неоптимально. И это не очевидно.
Любой мидл вполне напишет и даже глазом не моргнет
Ну поищи бенчмарки чтоли https://stackoverflow.com/questions/6433492/preg-match-vs-strpos-for-match-finding
Я не знаю что еще тебе доказывать
Регулярки медленные, сложные, их забывают, их трудно рефакторить. Какие еще нужны аргументы против?
Да я утверждаю. Выглядит вполне просто.
Не эта так другая похожая может попасть в ловушку.
В общем у тебя конструктивные аргументы в обратную сторону будут? Я ссылки привел.
Или только демагогия с матами?
Ты используешь логическую ошибку защита чубакки, с тобой бессмысленно.

Google

Pavel
12.05.2019
00:16:05
Изначально я не говорил что абсолютно всегда нужно брать strpos вместо регулярок
Ты сам себе придумал тезис и с ним споришь.
Всегда бояться != всегда избегать
Именно так, что тут неправильного?
Чтобы применить регулярку надо сначала разобрать строку, потом построить по ней конечный автомат и потом еще бегать по нему, это дополнительное время требует, неужели не очевидно?
> Ага, а если мы начинаем писать эту логику на
Какую - "эту" логику? Любую?
опкоды strpos и explode тоже кешируются, так что не аргумент
Опять какой-то притянутый за уши аргумент непонятно к чему :)
Ты в итоге бенчмарки изначальной задачи то делал?
У меня вот получилось что регулярка работает в полтора раза медленнее
Что конечно не 20 раз как я сначала думал, но тем не менее
у себя кодом на компе на 10 млн. итераций
Так что это бенч уже с учетом закешированного построенного автомата ;)
https://pastebin.com/WR38ULUW
А какой надо брать?
$ php t.php
25
18
вот на 50 млн. итераций

Admin
ERROR: S client not available

Pavel
12.05.2019
01:07:28
Это на твоей оптимальной регулярке?
ну скинь ее
Все равно ж explode максимально понятно, и нет никакого сложного автомата о котором ты говоришь

Google

Pavel
12.05.2019
01:14:08
Она не работает, не матчит ничего https://regex101.com/r/IXfAss/1
У тебя неправильная регулярка имхо
из текста w3 он тоже должен выхватывать
В условии написано взять из блока цифру, не написано что она идет всегда первой ;)
или так w3w
Но возможно это я уже загоняюсь
От того что оба неправильно работают
Ну потому что из 3w3 возвращать 3 это странно
Написано там в блоке
А не первое встреченное
Ну да, скорее это ошибка будет
А прочитать - сложно