RE2 (oprogramowanie)

RE2
Oryginalni autorzy Google
Pierwsze wydanie 11 marca 2010 ; 12 lat temu ( 2010-03-11 )
Wersja stabilna
2021-04-01 / 1 kwietnia 2021 ; 23 miesiące temu ( 2021-04-01 )
Magazyn
Napisane w C++
System operacyjny Wieloplatformowy
Typ Biblioteka dopasowywania wzorców
Licencja BSD
Strona internetowa github.com/google/re2 _ _ _ Edit this at Wikidata

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 .

Zobacz też