Цитата:
Сообщение от ProxyGreen
Хм я позволил себе провести некоторые тесты:
|
И что эти тесты покажут? Они тестируют реализацию регулярных выражений, которая не использует ни нка, ни дка. Поэтому эти тесты про дка и нка ничего не скажут. Постройте автоматы руками и все сразу станет видно.
Цитата:
|
Различия между "обычной" и POSIX реализациями в том, что обычная прекратит разбор при первом совпадении, "POSIX" будет шпарить до конца, в буквальном смысле, даже переберёт все варианты в конструкциях выбора даже если совпадение найдено в первом варианте, ну это мелочи конечно, ни чего существенного.
|
Да, это особенности реализации регулярных выражений. Тех самых, которые в языках программирования. И к нка/дка они имеют слабое отношение. Нка/дка строятся для "регулярных выражений" из computer science, но так регулярные выражения как раз ограничены в своих возможностях.
Цитата:
|
Вот это я не понял про что вы вообще.
|
Ну как о чем? О
конечных автоматах. Это ведь то, что описывается
- Набором состояний
- Алфавитом
- Начальным состоянием
- Функциями перехода
- Множеством конечных состояний
нка и дка отличаются только ограничениями на функции перехода и легко преобразуются друг в друга.
Цитата:
|
И опять что это тогда? Что за "движки", что за механизмы? Огласите весь список пожалуйста.
|
А я откуда знаю, какие вообще библиотеки есть для regex'ов? Вообще, есть pcre (и вроде бы даже в виде библиоетки). Есть конечные автоматы для классических регулярных выражений из Computer Science. Ну и практически в каждом языке есть реализация своих вариантов регулярных выражений, отличающихся по разным параметрам.
Цитата:
|
Вообще я просто хотел сказать, что регулярка в AS3 может работать медленно из-за того, что выражение построено не оптимально при верной его (выражения) идее.
|
Ну да, правильно. Поэтому и говорят, что регулярные выражения медленные. А то, что они в каком-то случае быстрые ничего не говорит. Может, в следующей версии регулярные выражения расширят (или оптимизируют некоторые случаи) и то, что работало быстро, станет работать медленно.