Porównanie silników wyrażeń regularnych

To jest porównanie silników wyrażeń regularnych .

Biblioteki

Lista bibliotek wyrażeń regularnych
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 ,

Qt GNU LGPL v. 2.1 , Qt Commercial

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

Lista języków i frameworków, w tym obsługa wyrażeń regularnych
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

Porównanie funkcji językowych (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

Porównanie funkcji językowych (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

Porównanie funkcji 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