Comments 10
Мне кажется странным поддерживать в движке регулярных выражений какую-то определенную кодировку юникода, пусть даже такую распространенную как UTF-8. Из статьи я понял, что огромный класс проблем был только от того, что нужно было реализовать поиск именно в байковом представлении UTF-8. Может быть было бы эффективнее искать сразу в кодпоинах Юникода?
Судя по всему, даже используя алфавит из кодпоинтов Юникода всё равно получаем огроменные символьные классы (и, соответственно, гигантские автоматы). При этом теряется универсальность и ещё, наверное, пришлось бы часть движков делать в двух экземплярах - один экземпляр для алфавита на основе байт, а второй - для алфавита из Юникодных кодпоинтов.
Не поверил своим глазам, как раз искал статьи про устройство Regex для решения одной задачи с LeetCode. Спасибо огромное
Там ещё есть ссылка на серию статей по устройству библиотеки RE2 от его автора.
Какая задача?
Если хочется именно написать свой КА, то я думаю можно начать с книжечки:
https://www.oreilly.com/library/view/introducing-regular-expressions/9781449338879/
А если нужно просто решить -- ну, решается эта задача в лоб в три строчки :)
Сорян, но поясните для меня, что такое "крейт" и "трейт"? Даже википедия ничего не знает по теме.
Regex engine internals as a library [full]