Комментарии 8
Вспоминается прошлогодний падёж Cloudflare из-за неудачной регулярки и тяжелого бэктрекинга, который она принесла.
+2
Как по мне, это результат отступления от правил.
Если у нас паттерн "(0*)*1", а строка «0000000000000000000000000000000000000000», то последовательность действий такая:
— результат выполнения выражения в группе: «0000000000000000000000000000000000000000». Дошли до конца строки, на остальные инструкции не хватает символов строки. Все, no match.
Если у нас паттерн "(0*)*1", а строка «0000000000000000000000000000000000000000», то последовательность действий такая:
— результат выполнения выражения в группе: «0000000000000000000000000000000000000000». Дошли до конца строки, на остальные инструкции не хватает символов строки. Все, no match.
0
Иногда вы не знаете, что придёт для матчинга.
0
Не всегда будет «no match». Достаточно чуть усложнить:
([01]*)*1
01000000000000000000000
([01]*)*1
01000000000000000000000
+1
Смотрим. 0 или 1. Первый символ. 0. Совпадение. Квантификатор {0, }. Следующий символ строки. 1. Если не 0 или 1 тогда следующая инструкция паттерна. Иначе читаем до тех пор, пока будет другой символ. Конец строки. Следующая инструкция паттерна. Квантификатор {0, } пропускаем. Следующая инструкция паттерна. 1. Конец строки. No match.
0
Так в данном случае таки есть match: «01»
+1
Релятивизм. Если паттерн — последовательность команд слева-направо, то таки нет. Если маска, с которой сравнивается строка, то таки да.
0
Дубль.
0
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.
Информация
- Дата основания
- Местоположение
- Россия
- Сайт
- team.mail.ru
- Численность
- 5 001–10 000 человек
- Дата регистрации
- Представитель
- Павел Круглов
Блог на Хабре
Микрофронтенды: разделяй и властвуй
3.2K 11Чем Tarantool круче Redis'а для IoT-сервисов
2.5K 6Деплоим проект на Kubernetes в Mail.ru Cloud Solutions. Часть 2: настройка и запуск приложения для транскрибации видео
963 0Fiber’ы — новая фича в PHP 8.1
4.4K 16Деплоим проект на Kubernetes в Mail.ru Cloud Solutions. Часть 1: архитектура приложения, запуск Kubernetes и RabbitMQ
4.3K 5
Еще раз о регекспах, бэктрекинге и том, как можно положить на лопатки JVM двумя строками «безобидного» кода