RE2 (oprogramowanie)
Oryginalni autorzy | |
---|---|
Pierwsze wydanie | 11 marca 2010 |
Wersja stabilna | 2021-04-01 / 1 kwietnia 2021
|
Magazyn | |
Napisane w | C++ |
System operacyjny | Wieloplatformowy |
Typ | Biblioteka dopasowywania wzorców |
Licencja | BSD |
Strona internetowa |
|
RE2 to biblioteka oprogramowania do wyrażeń regularnych za pośrednictwem maszyny o skończonych stanach , wykorzystująca teorię automatów , w przeciwieństwie do prawie wszystkich innych bibliotek wyrażeń regularnych , które wykorzystują implementacje śledzenia wstecznego . Zapewnia interfejs C++ .
RE2 został wdrożony i jest używany przez Google .
Porównanie z PCRE
RE2 ogólnie porównuje wydajność z wyrażeniami regularnymi zgodnymi z Perl (PCRE). W przypadku niektórych operatorów wyrażeń regularnych, takich jak |
( rozłączenie logiczne lub wartość logiczna „lub”) przekracza PCRE. Z drugiej strony RE2 nie obsługuje odniesień wstecznych i nie może ich skutecznie wdrożyć. Jest również nieco wolniejszy niż PCRE w przypadku operacji przechwytywania w nawiasach.
PCRE może używać dużego stosu rekurencyjnego z odpowiednim dużym zużyciem pamięci i mieć wykładniczy czas działania w przypadku pewnych wzorców. W przeciwieństwie do tego RE2 wykorzystuje stały stos i gwarantuje, że czas wykonania rośnie liniowo (a nie wykładniczo) wraz z rozmiarem danych wejściowych. Maksymalna ilość pamięci przydzielonej w RE2 jest konfigurowalna.
RE2 ma nieco mniejszy zestaw funkcji niż PCRE, ale ma bardzo przewidywalny czas działania i maksymalny przydział pamięci. Dzięki temu nadaje się do stosowania w aplikacjach serwerowych, które wymagają ograniczeń w zakresie wykorzystania pamięci i czasu obliczeniowego. Z drugiej strony PCRE ma prawie wszystkie funkcje, jakie może mieć biblioteka wyrażeń regularnych, ale ma nieprzewidywalny czas działania i zużycie pamięci, a także może rosnąć w nieograniczony sposób.
Użyj w produktach Google
RE2 jest używany na przykład przez produkty Google , takie jak; Gmail , Dokumenty Google i Arkusze Google . Zobacz GitHub, aby zapoznać się z dokumentacją składni: Składnia RE2 .
W Arkuszach Google jest używany w funkcjach RegexMatch() , RegexReplace() , RegexExtract() oraz funkcji znajdź i zamień . RegexExtract() nie używa grupowania .