2009-07-10 15 views
6

Właśnie przeczytałem tę interesting article o szczegółach implementacji dla różnych języków obsługujących wyrażeń regularnych.W jaki sposób stosowane są wyrażenia regularne w .NET?

Opisuje alternatywną implementację wyrażeń regularnych, która używa niedeterministycznych automatów skończonych (NFA) w porównaniu z deterministycznymi (DFA). Twierdzi, że implementacje DFA śledzące wstecz (wersja używana w Perlu, Javie i innych) są podatne na bardzo powolne działanie w przypadku niektórych szczególnie "patologicznych" wyrażeń regularnych. (grep, awk i Tcl nadal używają DFA, ale w jakiś sposób są szybciej wykładniczymi)

Nie ma odniesienia do ramy .NET, ale chciałbym się dowiedzieć, w jaki sposób implementowane są wyrażenia regularne .NET (C# w szczególności), i jak one się porównują pod względem wydajności.

Edit:

Mogę założyć, ponieważ artykułu odpowiadającego wspomina NET ma nawrotów, że będzie na równi z Perl i Java?

+2

FYI, istnieją tylko wyrażeń regularnych .NET, a nie wyrażeń regularnych C# i VB.NET. –

+0

Dzięki John - miałem przeczucie, że był to pojedynczy kod, ale nie byłem pewien, czy C# ujawnił coś, czego VB nie zrobił. –

+1

Po prostu offtopic ale związany z komentarzem: afaik, .NET jest kodowany w C#. : P Ale widzę, że ktoś mógłby się z tym pogubić. – Zack

Odpowiedz

10

Istnieje niesamowite write-up here. Korzysta z tego, że możesz wejść do kodu frameworka .NET i zobaczyć, co robi, i wyjaśnia, jak wszystko działa. To doskonała lektura.

+0

... napisany przez SO Denizen Jeff Moser. –

+0

Dzięki za połączenie. Zastanawiam się, czy początkowo znalazłem link przez SO ... – ojrac

Powiązane problemy