Как регулярные выражения реализованы в .NET? - PullRequest
6 голосов
/ 10 июля 2009

Я только что прочитал интересную статью о деталях реализации для различных языков, поддерживающих регулярные выражения.

В нем описывается альтернативная реализация регулярных выражений, в которой используются недетерминированные конечные автоматы (NFA) по сравнению с детерминированными (DFA). В нем утверждается, что реализации DFA с обратным отслеживанием (версия, используемая в Perl, Java и др.) Подвержены очень медленной работе с некоторыми особенно «патологическими» регулярными выражениями. (grep, awk и Tcl по-прежнему используют DFA, но как-то экспоненциально быстрее)

В нем нет ссылки на .NET Framework, но я хотел бы знать, как реализованы регулярные выражения .NET (в частности, C #) и как они сравниваются с точки зрения производительности.

Edit:

Могу ли я предположить, что, поскольку в статье ответчика упоминается, что .NET выполняет возврат, он будет наравне с Perl и Java?

1 Ответ

10 голосов
/ 10 июля 2009

Здесь офигенно здесь здесь . Он использует тот факт, что вы можете перейти к коду .NET Framework и посмотреть, что он делает, и объяснить, как все работает. Это отличное чтение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...