Pull to refresh

Comments 11

не вьехал чем отличается.*.*=.*, от .*=.*, что на нем упор в статье?
Ну почитатйте внимательно еще раз, все разжевано предельно понятно.
Поскольку .* — это жадный паттерн, то вместо линейного роста числа сопоставлений с ростом длины строки наблюдается почти квадратичный.
Кажется, комментарий был о том «зачем два раза подряд .*, а не один раз». И это не имеет никакого отношения к вашему ответу
.*(?:.*=.*)


Я, конечно, не эксперт в регулярках, но в чем смысл этого выражения? В зависимости от юзкейса, можно как минимум таким заменить (зачем вообще две .* подряд?)
.*?=.*?
Но это все еще очень странная регулярка.
Регулярка, скорее всего, составлялась «на лету», поэтому никто не пытался её упрощать. Просто проверили, что она матчит требуемый пример и отправили в работу.
В компании, где эта регулярка запускается сотни тысяч раз в единицу времени и входит в основной workflow? На лету, без тестов, без код ревью? Ну, ССЗБ, что еще сказать
Ну почему же без тестов. В статье ясно написано, что тесты были, но они не выявили аномального роста потребления ресурсов. Вероятно, это недостаток теста, но идеальных тестов не бывает. Вот насчёт ревью ничего не увидел, но, строго говоря, не уверен, что это сильно помогло бы в подобном, но немного менее очевидном случае. Всё-таки regex в голове прокручивать достаточно затруднительно.
У вас есть проблема. Вы решили использовать регулярные выражения чтобы её решить. Теперь у вас две проблемы.

первоначальный источник мне не известен

На самом деле, проблема с реализацией регулярных выражений и бэктрэкингом есть много где. Вот тут мне встречался неплохой разбор этой проблемы, в том числе со ссылкой на исходную работу Томпсона.

У меня подобная была проблема, но отловил её на интеграционном тесте, в котором я учёл возможный большой объём данных, а не рыбу в 3 строчки.

Очень интересно было читать эту статью сразу после https://habr.com/ru/post/460901/


И я думаю что "на работе" никому никогда не надо было понимать как работают регулярные выражения, и разницу между НКА и ДКА. И многие комментаторы из прошлой статьи на вопрос "как работает сборщик мусора регулярное выражение", обиделись бы и ушли со словами что на работе это не нужно. Но тут компании Cloudflare повезло, что в штате есть люди которые понимают стоимость выражений вида ...=. и считают что программисту полезно это знать.

Sign up to leave a comment.