Porównanie silników wyrażeń regularnych
To jest porównanie silników wyrażeń regularnych .
Biblioteki
Nazwa | Oficjalna strona internetowa | Język programowania | Licencja oprogramowania | Używany przez |
---|---|---|---|---|
Zwiększ .regex | Wzmocnij biblioteki C++ | C++ | Zwiększyć | Notepad++ >= 6.0.0, EmEditor |
Boost.Xpressive | Wzmocnij biblioteki C++ | C++ | Zwiększyć | |
DEELX | RegExLab | C++ | Prawnie zastrzeżony | |
FREJ | Rozmyte wyrażenia regularne w Javie | Jawa | LGPL | |
GLib / GRegex | Podręcznik referencyjny GLib | C | LGPL | |
GRETA | Badania Microsoftu | C++ | Prawnie zastrzeżony | |
Gregex | Grovf Inc. | RTL, HLS | Prawnie zastrzeżony | Silnik regex z akceleracją FPGA >100Gbit/s dla branży cyberbezpieczeństwa, finansów i e-commerce. |
Hyperscan | Intel | C, zestaw specyficzny dla x86 ( SSSE3 +) | 3-klauzulowe BSD | Rspamd |
OIOM | Międzynarodowe komponenty dla Unicode | C, C++ | OIOM | Foundation (wersje open source Apple i Swift) |
Dżakarta Wyrażenie regularne | Projekt Apache Jakarta | Jawa | Apache | |
java.util.regex | Podręcznik użytkownika Javy | Jawa | GNU GPLv2 z wyjątkiem Classpath | jEdytuj |
JRegex | JRegex | Jawa | BSD | |
MATLAB | Wyrażenia regularne | Język MATLAB | Prawnie zastrzeżony | |
oniguruma | Kosako | C | BSD | Atom , Take Command Console , Tera Term , TextMate , Sublime Text , SubEthaEdit , EmEditor i jq |
Pattwo | Stevesoft | Java (kompatybilna z Javą 1.0) | LGPL | |
PCRE | pcre.org | C, C++ | BSD | Apache HTTP Server , Nginx , BBEdit , Edbrowse, Julia , HHVM , Notepad++ < 6.0.0, PHP , Delphi , R , Exim SWI-Prolog |
Qt /QRegExp | Digia | C++ | Qt GNU GPL v. 3.0 , | Kate , Kil |
regex — biblioteki wyrażeń regularnych Henry'ego Spencera | lista argumentów | C | BSD | |
RE2 | RE2 | C++ | BSD | Idź , Arkusze Google, Gmail, G Suite |
Zaawansowane wyrażenia regularne Henry'ego Spencera | Tcl | C | BSD | |
RGX | RGX | Biblioteka komponentów oparta na C++ | P6R | |
RXP | Tytan IC | RTL | Prawnie zastrzeżony | przyspieszenie sprzętowe wyszukiwania przy użyciu RegEx dostępne dla ASIC, FPGA i chmury. Umożliwia masowo równoległe przetwarzanie treści z ultrawysokimi prędkościami. |
SubReg | Matta Bucknalla | C | MIT | |
TPerlRegEx | Komponent VCL TPerlRegEx | Pascal obiektowy | MPLv1.1 | |
TRE | Ville Laurikari | C | BSD | muł |
TRegExpr | Studio RegExp | Pascal obiektowy | Podwójna licencja: freeware lub LGPL z wyjątkiem statycznego łączenia | Totalny Dowódca |
Język Wolframa ( Mathematica ) | Centrum dokumentacji języka Wolfram | Język Wolframa | Prawnie zastrzeżony | Mathematica , platforma programistyczna Wolfram |
XRegExp | XRegExp | JavaScript | MIT |
Języki
Język | Oficjalna strona internetowa | Licencja oprogramowania | Uwagi |
---|---|---|---|
ActionScript 3 | Centrum technologii ActionScript | Bezpłatny | |
APL ( APLX , Dialog, GNU) | APL Wiki | Licencjonowane przez odpowiednią implementację |
⎕SS (PCRE), ⎕R / ⎕S (PCRE), ⎕SS (PCRE2) |
C++11 ( C++ ) | Witryna dotycząca standardów C++ | Licencjonowane przez odpowiednią implementację | Od ISO14822:2011(e), podobnie jak ECMAScript domyślnie (opis gramatyki) |
D | D | Zwiększ licencję na oprogramowanie | |
Free Pascal ( obiektowy Pascal ) | freepascal.org | LGPL z wyjątkiem statycznego łączenia | Free Pascal 2.6+ jest dostarczany z TRegExpr firmy Sorokin i dwiema innymi bibliotekami wyrażeń regularnych; Zobacz wiki.lazarus.freepascal.org/Regexpr . |
Iść | Golang.org | W stylu BSD | |
Haskella | Haskell.org | BSD3 | Pominięte w raporcie językowym oraz w bibliotekach hierarchicznych GHC |
Jawa | Jawa | Powszechna Licencja Publiczna GNU | RE są zapisywane jako ciągi znaków w kodzie źródłowym: wszystkie odwrotne ukośniki muszą być podwojone, co szkodzi czytelności. |
JavaScript ( ECMAScript ) | ECMA-262 | BSD3 | Ograniczone, ale RE są pierwszorzędnymi obywatelami języka ze specyficzną składnią /.../mod . |
Julia | JuliaLang.org | Licencja MIT | RE są częścią podstawowej biblioteki językowej wykorzystującej wbudowane PCRE i dostępne jest opcjonalne opakowanie dla (kodu C) ICU. |
Lua | Lua.org | Licencja MIT | Używa uproszczonego, ograniczonego dialektu; można powiązać z potężniejszą biblioteką, taką jak PCRE lub alternatywnym parserem, takim jak LPeg. |
Matematyka | Wolfram | Prawnie zastrzeżony | |
.INTERNET | MSDN | Licencja MIT | |
Nim | nim-lang.org | Licencja MIT | Standardowa biblioteka zawiera oparte na PCRE moduły re i nre , jak również różne alternatywy (np. strutils , pegs ( parsing Expression Grammar matching), strscans , parseutils , itp.). |
OCaml | Caml | LGPL | Od 2010 roku moduł standardowy jest ogólnie uważany za przestarzały; często polecanymi bibliotekami są pcre (z pełną obsługą PCRE) i re (która nie jest tak kompletna, ale zapewnia lepszą wydajność i zapewnia nakładki na popularne składnie: PCRE, Perl, Posix, Emacs, shell globbing). |
Perl | Perl.com | Licencja Artystyczna lub Powszechna Licencja Publiczna GNU | Pełna, centralna część języka |
PHP | PHP.net | Licencja PHP | Ma dwie implementacje, przy czym PCRE jest bardziej wydajnym pod względem szybkości funkcjami |
POSIX C ( C ) | Publikacja internetowa POSIX.1 | Licencjonowane przez odpowiednią implementację | Obsługuje składnię POSIX BRE i ERE |
Pyton | python.org | Licencja Python Software Foundation | Python ma dwie główne implementacje, wbudowaną bibliotekę re i bibliotekę wyrażeń regularnych . |
Rubin | ruby-doc.org | Powszechna Licencja Publiczna Biblioteki GNU | Ruby 1.8, Ruby 1.9 i Ruby 2.0 i nowsze wersje używają różnych silników; Ruby 1.9 integruje Oniguruma, Ruby 2.0, a później integruje Onigmo, widelec firmy Oniguruma. |
Rdza | dokumenty.rs | Licencja MIT | Podstawowa skrzynka wyrażeń regularnych nie pozwala na wyrażenia rozglądające się. Istnieje wiązanie Oniguruma zwane onig , które to robi. |
SAP ABAP | SAP.com | Prawnie zastrzeżony | |
Tcl | tcl.tk |
Licencja Tcl/Tk (w stylu BSD) |
Biblioteka Tcl podwaja się jako biblioteka wyrażeń regularnych. |
Język Wolframa | Badania Wolframa | Zastrzeżone : do użytku bezpłatnego w ograniczonej skali na platformie Wolfram Development | |
Schemat XMLa | W3C | Licencjonowane przez odpowiednią implementację | |
XPath 3 / XQuery | W3C | Licencjonowane przez odpowiednią implementację |
Funkcje językowe
UWAGA: Aplikacja korzystająca z biblioteki do obsługi wyrażeń regularnych niekoniecznie oferuje pełny zestaw funkcji biblioteki, np. GNU grep, który używa PCRE, nie oferuje obsługi wyprzedzającej, chociaż PCRE tak.
Część 1
Kwantyfikator „+”. | Zanegowane klasy postaci | Kwantyfikatory niechciwe |
Nieśmiałe grupy |
rekursja | Patrz przed siebie | Spojrzeć za siebie | Odwołania wsteczne |
> 9 zindeksowanych przechwytów | |
---|---|---|---|---|---|---|---|---|---|
Wzmocnienie.regex | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak |
Boost.Xpressive | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak |
CL-PPCRE | Tak | Tak | Tak | Tak | NIE | Tak | Tak | Tak | Tak |
EmEdytor | Tak | Tak | Tak | Tak | NIE | Tak | Tak | Tak | NIE |
FREJ | NIE | NIE | Niektóre | Tak | NIE | NIE | NIE | Tak | Tak |
GLib / GRegex | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak |
GNU grep | Tak | Tak | Tak | Tak | NIE | Tak | Tak | Tak | — |
Haskella | Tak | Tak | Tak | Tak | NIE | Tak | Tak | Tak | Tak |
RXP | Tak | Tak | Tak | Tak | NIE | NIE | NIE | Tak | Tak |
Wyrażenie regularne ICU | Tak | Tak | Tak | Tak | NIE | Tak | Tak | Tak | Tak |
Jawa | Tak | Tak | Tak | Tak | NIE | Tak | Tak | Tak | Tak |
JavaScript ( ECMAScript ) | Tak | Tak | Tak | Tak | NIE | Tak | Tak | Tak | Tak |
JGsoft | Tak | Tak | Tak | Tak | NIE | Tak | Tak | Tak | Tak |
Lua | Tak | Tak | Niektóre | NIE | NIE | NIE | NIE | Tak | NIE |
.INTERNET | Tak | Tak | Tak | Tak | NIE | Tak | Tak | Tak | Tak |
OCaml | Tak | Tak | NIE | NIE | NIE | NIE | NIE | Tak | NIE |
PCRE | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak |
Perl | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak |
PHP | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak |
Pyton | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak |
Qt /QRegExp | Tak | Tak | Tak | Tak | NIE | Tak | NIE | Tak | Tak |
RE2 | Tak | Tak | Tak | Tak | NIE | NIE | NIE | NIE | Tak |
Rubin / Onigmo | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak |
TRE | Tak | Tak | Tak | Tak | NIE | NIE | NIE | Tak | NIE |
Krzepa | Tak | Tak | Tak | Tak | NIE | Tak | Tak | Tak | NIE |
RGX | Tak | Tak | Tak | Tak | NIE | Tak | Tak | Tak | Tak |
Tcl | Tak | Tak | Tak | Tak | NIE | Tak | Tak | Tak | Tak |
TRegExpr | Tak | ? | Tak | ? | ? | ? | ? | ? | ? |
Schemat XMLa | Tak | Tak | NIE | — | NIE | NIE | NIE | NIE | — |
XPath 3 / XQuery | Tak | Tak | Tak | Tak | NIE | NIE | NIE | Tak | Tak |
XRegExp | Tak | Tak | Tak | Tak | NIE | Tak | Tak | Tak | Tak |
Część 2
dyrektywy |
warunkowe | Grupy atomowe |
Nazwane przechwytywanie |
Uwagi | Wbudowany kod | Obsługa właściwości Unicode | Grupy równoważące |
Spojrzenie w tył o zmiennej długości |
|
---|---|---|---|---|---|---|---|---|---|
Wzmocnienie.regex | Tak | Tak | Tak | Tak | Tak | NIE | Niektóre | NIE | NIE |
Boost.Xpressive | Tak | NIE | Tak | Tak | Tak | NIE | NIE | NIE | NIE |
CL-PPCRE | Tak | Tak | Tak | Tak | Tak | Tak | Niektóre | NIE | NIE |
EmEdytor | Tak | Tak | ? | ? | Tak | NIE | ? | NIE | NIE |
FREJ | NIE | NIE | Tak | Tak | Tak | NIE | ? | NIE | NIE |
GLib / GRegex | Tak | Tak | Tak | Tak | Tak | NIE | Niektóre | NIE | NIE |
GNU grep | Tak | Tak | ? | Tak | Tak | NIE | NIE | NIE | NIE |
Haskella | ? | ? | ? | ? | ? | NIE | NIE | NIE | NIE |
RXP | Tak | Tak | NIE | Tak | Tak | NIE | NIE | NIE | NIE |
Wyrażenie regularne ICU | Tak | NIE | Tak | Tak | Tak | NIE | Tak | NIE | NIE |
Jawa | Tak | NIE | Tak | Tak | Tak | NIE | Niektóre | NIE | NIE |
JavaScript ( ECMAScript ) | NIE | NIE | NIE | Tak | NIE | NIE | Niektóre | NIE | Tak |
JGsoft | Tak | Tak | Tak | Tak | Tak | NIE | Niektóre | NIE | Tak |
Lua | NIE | NIE | NIE | NIE | NIE | NIE | NIE | NIE | NIE |
.INTERNET | Tak | Tak | Tak | Tak | Tak | NIE | Niektóre | Tak | Tak |
OCaml | NIE | NIE | NIE | NIE | NIE | NIE | NIE | NIE | NIE |
PCRE | Tak | Tak | Tak | Tak | Tak | Tak | Tak | NIE | NIE |
Perl | Tak | Tak | Tak | Tak | Tak | Tak | Tak | NIE | NIE |
PHP | Tak | Tak | Tak | Tak | Tak | NIE | NIE | NIE | NIE |
Pyton | Tak | Tak | Tak | Tak | Tak | NIE | Tak | NIE | Tak |
Qt /QRegExp | NIE | NIE | NIE | NIE | NIE | NIE | NIE | NIE | NIE |
RE2 | Tak | NIE | ? | Tak | NIE | NIE | Niektóre | NIE | NIE |
Rubin / Onigmo | Tak | Tak | Tak | Tak | Tak | NIE | Niektóre | NIE | NIE |
Tcl | Tak | NIE | Tak | NIE | Tak | NIE | Tak | NIE | NIE |
TRE | Tak | NIE | NIE | NIE | Tak | NIE | ? | NIE | NIE |
Krzepa | Tak | NIE | Tak | NIE | NIE | NIE | NIE | NIE | Tak |
RGX | Tak | Tak | Tak | Tak | Tak | NIE | Tak | NIE | NIE |
Schemat XMLa | NIE | NIE | NIE | NIE | NIE | NIE | Tak | NIE | NIE |
XPath 3 / XQuery | NIE | NIE | NIE | NIE | NIE | NIE | Tak | NIE | NIE |
XRegExp | Tylko prowadzenie | NIE | NIE | Tak | Tak | NIE | Tak | NIE | Tak |
Funkcje API
Natywna obsługa UTF-16 | Natywna obsługa UTF-8 | Dopasowywanie wielu linii | Częściowe dopasowanie | |
---|---|---|---|---|
Wzmocnienie.regex | NIE | NIE | Tak | Tak |
GLib / GRegex | Tak | Tak | Tak | Tak |
RXP | Tak | Tak | NIE | Tak |
Wyrażenie regularne ICU | Tak | NIE | Tak | ? |
Jawa | NIE | Częściowy | Tak | Tak |
.INTERNET | NIE | Tak | Tak | ? |
PCRE | Tak | Tak | Tak | Tak |
Qt /QRegExp | Tak | NIE | NIE | ? |
Tcl | Tak | Tak | Tak | ? |
TRE | Tak | Tak | Tak | ? |
RGX | NIE | NIE | Tak | ? |
wxWidgets :: wxRegEx | Tak | Tak | Tak | ? |
XRegExp | Tak | Tak | Tak | NIE |
Zobacz też
Linki zewnętrzne
- Porównanie smaków wyrażeń regularnych — szczegółowe porównanie najpopularniejszych smaków wyrażeń regularnych
- Podsumowanie składni wyrażenia regularnego
- Testowanie wyrażeń regularnych online — z obsługą Java, JavaScript, .Net, PHP, Python i Ruby
- Implementacja wyrażeń regularnych — seria artykułów Russa Coxa, autora RE2
- Silniki wyrażeń regularnych