2009-07-10 4 views
6

Ich habe gerade gelesen interesting article über die Implementierungsdetails für verschiedene Sprachen, die reguläre Ausdrücke unterstützen.Wie werden reguläre Ausdrücke in .NET implementiert?

Es beschreibt eine alternative Implementierung von regulären Ausdrücken, die nicht-deterministische endliche Automaten (NFAs) gegenüber deterministischen (DFAs) verwendet. Es wird behauptet, dass Rückverfolgungs-DFA-Implementierungen (die in Perl, Java und anderen verwendete Version) für sehr "pathologische" reguläre Ausdrücke anfällig für sehr langsame Leistung sind. (grep, awk und Tcl verwenden immer noch DFAs, sind aber irgendwie exponentiell schneller)

Es gibt keinen Verweis auf das .NET-Framework, aber ich würde gerne wissen, wie .NET (C# insbesondere) reguläre Ausdrücke implementiert sind, und wie sie sich in Bezug auf die Leistung vergleichen.

Edit:

Kann ich davon ausgehen, da der Artikel des Antworter erwähnt .NET nicht Rückzieher, dass es auf einer Stufe mit Perl und Java sein wird?

+2

FYI, es gibt nur reguläre Ausdrücke von .NET, nicht C# und VB.NET reguläre Ausdrücke. –

+0

Danke John - Ich hatte eine Ahnung, dass es eine einzige Codebasis war, aber war nicht sicher, ob C# alles offen legte, was VB nicht hatte. –

+1

Nur offtopic aber bezogen auf den Kommentar: afaik, .NET ist in C# codiert. : P Aber ich kann sehen, wo jemand dadurch verwirrt werden würde. – Zack

Antwort

10

Es gibt eine tolle schreiben here. Er nutzt die Tatsache, dass Sie in den .NET-Framework-Code einsteigen und sehen können, was er tut, und erklärt, wie alles funktioniert. Es ist eine ausgezeichnete Lektüre.

+0

... geschrieben von SO denizen Jeff Moser. –

+0

Danke für die Verbindung. Ich frage mich, ob ich ursprünglich den Link durch SO gefunden habe ... – ojrac