2011-07-10 11 views
6

Biorąc pod uwagę wyrażenie regularne, chcę utworzyć zestaw ciągów, które pasują do tego wyrażenia regularnego. Ważne jest, aby pamiętać, że ten zestaw nie będzie nieskończony, ponieważ będzie maksymalna długość każdego łańcucha. Czy są na to jakieś dobrze znane algorytmy? Czy są jakieś prace naukowe, które mogłem przeczytać, aby uzyskać wgląd w ten problem?Tworzenie wszystkich możliwych dopasowań wyrażenia regularnego

Dzięki.

p.s. Czy tego rodzaju pytanie byłoby bardziej odpowiednie w teoretycznej wymianie stosów cs?

+0

dobrze, nie możesz głosować, aby przejść do Teoretycznej CS, więc możesz zgłosić swoje pytanie i zadać mod. – BoltClock

+0

Wszystkie możliwe ciągi odpowiadają wszystkim możliwym ścieżkom przez automat stanów, który kończy się dopasowaniem. Ale to jest jak pytanie, daj mi wszystkie możliwe programy o ograniczonej długości, które pasują do mojego wyjścia z mojego programu. – gtrak

+0

Kiedy mówisz "maksymalna długość" dla każdego ciągu oznaczasz, że twoje wyrażenie nie zawiera żadnych operatorów + lub *? –

Odpowiedz

4

W świecie Perl mamy modułu na CPAN, że właśnie to robi ->Regexp::Genex

+0

Dziękuję. Mogę po prostu użyć tego modułu. Czy znasz jakieś zasoby, które omawiają sposób wdrożenia takiego modułu? Byłem ciekawy, jak można to wykonać elegancko/sprawnie. – Sam

+0

wystarczy sprawdzić jego kod źródłowy. intuicyjnie, regex to automat, a więc wykres. generowanie wszystkich ciągów pasujących do napisu oznaczałoby znalezienie wszystkich ścieżek rozpoczynających węzeł "start" i kończących się w węźle "accept" automatu, więc oznaczałoby to wyliczenie ścieżek wewnątrz wykresu. – average

Powiązane problemy