Google udostępnia bibliotekę do wyrażeń regularnych

12.03.2010 20:28, Autor: Grzegorz Niemirowski (gniemirowski), Kategoria: News
NewsImage

Google udostępniło swoją bibliotekę do przetwarzania wyrażeń regularnych.

Nosi ona nazwę RE2 i jest dostępna jako projekt Open Source. Jest to biblioteka dla języka C++ i według Google ma ją wyróżniać szybkość działania i bezpieczeństwo. W wielu popularnych silnikach do wyrażeń regularnych czas wykonywania dopasowania/wyszukania rośnie wykładniczo w funkcji rozmiaru danych co powoduje wolne działanie nawet dla niezbyt dużych zbiorów danych. Google postanowiło obejść ten problem korzystając z teorii automatów do optymalizacji przetwarzania. W przeciwieństwie jednak do wielu rozwiązań korzystających z automatów, biblioteka Google posiada rozbudowane możliwości, prawie w całości obejmujące te, które posiada perl i PCRE. Zrezygnowano natomiast z implementacji referencji wstecznych oraz generalizowanych asercji o zerowej długości ponieważ nie można ich zaimplementować w sposób wydajny. Biblioteki RE2 mogą działać wielowątkowo i dzięki temu zapewnić większą wydajność. Zwiększone bezpieczeństwo jest osiągane dzięki ograniczeniu wielkości stosu, program korzystający z RE2 jest więc bardziej odporny na jego przepełnienie.

Wyrażenia regularne są bardzo ważnym narzędziem pozwalającym wyszukiwać wzorce w zbiorze danych. Są powszechnie wykorzystywane w wielu aplikacjach, zarówno desktopowych jak i webowych. Nieobce są także administratorom, szczególnie systemów uniksowych, piszącym skrypty zarządzające systemami.

Źródło: Google
r   e   k   l   a   m   a

Komentarze (13)  

Avatar
Oo (niezalogowany) | 12.03.2010 20:44#1

"Zrezygnowano natomiast z implementacji referencji wstecznych oraz generalizowanych asercji o zerowej długości ponieważ nie można ich zaimplementować w sposób wydajny." Że co?

AvatarUżytkownik jest nieaktywny
mr_iks | 12.03.2010 21:14#2

O, na pewno się przyda. Dobry krok ze strony Google.

Avatar
przemo_li_niezalogowany (niezalogowany) | 12.03.2010 21:32#3

:D te same możliwości co Perl to robi wrażenie.
Czekam na benhmarki.

AvatarUżytkownik jest nieaktywny
M@ster | 12.03.2010 22:02#4

Odkąd poznałem regexpr moje życie nie jest już takie same ;)

AvatarUżytkownik jest nieaktywny
RubasznyRumcajs | 12.03.2010 23:52#5

"(..)est to biblioteka dla języka C++(..)"

czemu nie dla Go :? toć to byłoby dobrym posunięciem jakby nie patrzeć...

AvatarUżytkownik jest nieaktywny
Limak | 13.03.2010 0:08#6

a regex w boost nie wystarcza?

Avatar
przemo_li_niezalogowany (niezalogowany) | 13.03.2010 9:23#7

@Limak
:) konkurencja nikomu nie zaszkodziła.
Poza tym w przypadku Boosta mógł wystąpić konflikt interesów. Ot wybrana przez Google metoda ma wady, a Boost zrowija naście firm, którym takie zmiany mogły nie pasować.

AvatarUżytkownik jest nieaktywny
zahariash | 13.03.2010 14:20#8

Przy podstawowym użyciu wyrażeń regularnych (stosunkowe proste wyrażenia) nawet dla dużych danych RE2 jest diabelnie szybki. Porównanie do PCRE: http://swtch.com/~rsc/regexp/regexp3.html

Avatar
piotao (niezalogowany) | 13.03.2010 17:08#9

No dobra, ale jak nie ma odwolan wstecznych, albo asercji to ja sobie w buty moge wsadzic taki silnik RE, bo akurat czesto potrzebuje naprawde zaawansowanych wyrazen, i te ktore sa w Perlu doskonale daja rade. Trudno im bylo troche pomyslec i poswiecic wydajnosc dla niektorych typow wyrazen? Lenie sa i tyle!
Perl rulez, szkoda tylko, ze nie ma obslugi zanegowanej asercji wstecznej dowolnej dlugosci, ale nie mozna miec wszystkiego... Poza tym mozna to obejsc. A czy w RE2 mozna zrobic regexpy rekurencyjne? W perlu mozna.

Avatar
fokstrot (niezalogowany) | 13.03.2010 18:20#10

Chłopaki, Wasz język powala mnie na kolana. Brzmi jak niezrozumiała lecz piękna poezja...

AvatarUżytkownik jest nieaktywny
zahariash | 13.03.2010 22:28#11

@piotao

A co ci szkodzi używać kilkadziesiąt razy szybszej biblioteki w 90% przypadków a pcre w pozostałych?

Avatar
piotao (niezalogowany) | 25.05.2010 19:30#12

Generalnie do kodzenia w C++ jest to super sprawa, nie trzeba osadzać perla przez jakieś kombosy z XS, który do pięknych nie należy. Ale do prostych/systemowych zadań perl wydaje mi się bezkonkurencyjny, ze względu na swoje cechy języka skryptowego i dobrą wydajność. Zapewne zwolennicy pythona, basha, ruby'ego lub awk powiedzieliby podobnie o swoim ulubionym... Ale ostatnio znowu trochę w C++ kodzę i istnienie takiej biblioteki to duża pomoc.

Avatar
gaiusss (niezalogowany) | 18.06.2010 14:27#13

Odnośnie testowania wyrażeń: http://regexp.pl/

Dodaj komentarz

Zasady publikowania komentarzy
Autor
Treść
 
Program tygodnia
GIMP 2.6.12

Ocena: 8,8
icon
Polecamy
Test: Sound Blaster Recon 3D Omega

Tandem Creative bez kabla
Dolina Charlotty
Top programy
  •  
Top programy ostatnie 7 dni
  •  
Top programy ostatnie 30 dni
  •  
Skanery antywirusowe
skaner av