2008-08-04 14 views
21

Szukam solidnego, łatwego w użyciu, ewaluatora wyrażeń regularnych dla natywnego języka C++, niezależnie od platformy lub systemu Windows.Łatwa w użyciu obsługa wyrażeń regularnych w C++?

Wymagania:

  • Nie można użyć podwyższenie lub biblioteki ACE regex (niestety)
  • nie można użyć .NET Regex (lub dowolny kod zarządzany)

Głównym wymogiem jest że powinien być samodzielny i otwarty.

+0

Po prostu ciekawy - dlaczego nie możesz użyć wzmocnienia? – svec

+0

@svec Ponieważ kod źródłowy jest przeznaczony do dystrybucji, a wielu z tych, którzy go używają, nie ma funkcji Boost i nie może lub nie chce pobierać i budować zwiększenia. Ale niektóre biblioteki są przeznaczone do włączenia, więc jest to dobre. Powinny się wydarzyć 5 lat temu, ale hej. Za wszelką cenę. –

+1

Ale klienci nie muszą mieć zainstalowanego boostu. Połącz statycznie z boostem i nie powinno być problemu. (I tak zawsze powinieneś połączyć statycznie z boostem, ponieważ nawet jeśli klienci go zainstalowali, mogą nie mieć tej samej wersji lub skompilowali go z tymi samymi opcjami.) –

Odpowiedz

8

spróbować libpcre

Jeśli utkniesz w oknach mają port Windows, który powinien działać. Wiem, że używa go e-texteditor, więc przynajmniej to potwierdza, że ​​działa :-)

3

Funkcja wyrażeń regularnych biblioteki GNU C (regcomp(), regexec() i przyjaciele) jest uszkodzona. Zamiast tego użyj libetre; sygnatury funkcji odpowiadają tym, które dostarcza glibc. http://laurikari.net/tre/

7

Jeśli używasz programu Visual Studio, możesz użyć dodatku Feature Pack programu Visual C++ 2008, który implementuje część TR1 i zawiera parsowanie wyrażeń regularnych. Get it

1

Dlaczego nie używasz biblioteki regex firmy Microsoft ATL? Kenny Kerr napisał ostatnio o tym short article. Mam nadzieję, że to pomoże.

3

Chciałbym zastąpić zalecenie dla PCRE. Użyłem go w projektach C++ w Windows i działa świetnie. To nic nie kosztuje, nawet do budowania komercyjnego oprogramowania. Implementuje również język de facto standardowego języka wyrażania regularnego, który będzie dostępny dla użytkowników. PCRE jest oczywiście kompatybilny z Perl, a Python używa tej samej biblioteki.

Natywny interfejs PCRE jest nieco niezręczny i bardzo w stylu C, więc prawdopodobnie warto napisać wokół niego ładną wrapper C++. Prawdopodobnie jest już jeden, ale nie znam nikogo.

0

Bezpłatna biblioteka serwera ATL z Codeplex zawiera analizator składni regex.

ATL Server