Компания Google открыла (http://google-opensource.blogspot.com/2010/03/re2-principled...) под лицензией BSD исходные тексты RE2 (http://code.google.com/p/re2/), написанной на языке C++ библиотеки для организации выполнения PCRE-совместимых регулярных выражений. Библиотека отличается высокой скоростью работы, хорошей безопасностью, поддержкой использования в многопоточных программах. RE2 позиционируется в качестве альтернативы реализаций регулярных выражений в PCRE, Perl и Python, особенно эффективной при обработке больших объемов данных.
Для обработки регулярных выражений в RE2 применен метод автомата (http://swtch.com/~rsc/regexp/regexp1.html), отличающийся линейной (http://pdos.csail.mit.edu/~rsc/regexp-img/grep4p.png) зависимостью между временем выполнения регулярного выражения и размером текста для которого оно применяется. В реализации регулярных выражений в Perl/PCRE подобная зависимость имеет близкий к экспоненциальному (http://pdos.csail.mit.edu/~rsc/r...URL: http://google-opensource.blogspot.com/2010/03/re2-principled...
Новость: http://www.opennet.me/opennews/art.shtml?num=25765
лучше чем буст?
да :)
>да :)sed !? Не?
У Google пока ничего хорошего не было, кроме, быть может, поиска.
Поиск построенный на плохих регекспах... Вероятно всё скоро измениться...
В поиске Google уже можно использовать regexp-ы?? Я опять проспал обед?
http://www.google.com/codesearch -- тут можно.
google search, google mail и самое главное google adwords и adsense (на них они сделали весь свой капитал) это о популярных продуктах.
А так их продукты все хороши
Поиск да. codesearch очень да. web-почта, да еще и прямо у большого брата, хорошей не может быть по определению. ad* это поганая реклама, ее хорошей может разве что больной назвать. Хорошо в ней то, что она элементарно банится adblock'ом.
Я бы лучше вспомнил нормальные опенсорсные не-web проекты, как-то protocol buffers, google perftools. Почти все остальное откровенный мусор - браузер-троян, попытки изменений в DNS для шпионства за пользователями, недоось бесполезная без сети и продажи души гуглу, откровенно провальная невнятность wave, куча тормозных java и javascript нашлепок.
Ну еще можно дать картонную медаль за первопроходчество - например, maps первые сделали они, и поиск маршрута по ним тоже. Потом в яндексе это сделали лучше и с пробками, а в OSM вообще замечательно, гибко и свободно.
"ad* это поганая реклама, ее хорошей может разве что больной назвать."Если бы ты на ней деньги умел зарабатывать, ты бы так не говорил.
"не-web проекты, как-то protocol buffers, google perftools."
Кстати да, MapReduce etc"Почти все остальное откровенный мусор - браузер-троян"
Ложь, вы слышали звон каких-то фанатиков и толком не стали разбираться в чем дело, советую вам еще раз пойти по интернетам и собрать информации о Chrome. Клон Iron был создан только ради PR.
Некоторые люди, сталкиваясь с проблемой, думают,
"- Я знаю, я буду использовать регулярные выражения",
Теперь у них есть две проблемы. :)(c) Джэйм Завински
> $ perl -e '("a" x 100000) =~ /^(ab?)*$/;'
> Segmentation fault (core dumped)
>$pavel@suse64:/tmp> perl -e '("a" x 100000) =~ /^(ab?)*$/;'
pavel@suse64:/tmp> echo $?
0Просто в гугле юзают х...вый Perl :)
Почему под BSDL? (Риторический вопрос)
>Почему под BSDL? (Риторический вопрос)А под чем еще?
Библиотеку логично под LGPL
Логично для кого?
потому что своя свобода дороже свободы какого-то там кода
>Почему под BSDL? (Риторический вопрос)Видимо, потому что PD не по всем юрисдикциям признаётся, а смысл выпуска -- стандартизировать реализацию де-факто. Гругря им сиренево в крапинку, потому как ни возврата кодом, ни тем более денег от этого напрямую не ожидают.
>Для обработки регулярных выражений в RE2 применен метод автомата (http://swtch.com/~rsc/regexp/regexp1.html), отличающийся линейнойПоходу беспонтовый гон, либо в 2007 году был баг в Perl 5.8.7.
$ perl -e '$n = 100; $x="a?"x $n . "a" x $n; $t = "a" x 100000; if ($t =~ /$x/){ print "match\n"; }'match
Perl 5.10.0 отработал мгновенно, а обещали 10**15 лет.
>С точки зрения потребления памяти, размер стека в RE2 имеет фиксированную величинуЭто очень здорово, так как поиск в гигабайтных файлах не имеющих символов конца строки у меня когда-то сжирал всю оперативку.
поиск результатов скана снифера? если бы я часто такое использовал, то написал бы программку с доступом к файлу блоками. максимальный размер памяти - размер блока * 2, чтобы не было особых потерь в скорости скана и учитывать то, что строка может быть в двух блоках. для такой задачи не нужна вся оперативка :)
чем искал-то?
В boost кстати блочные регэкспы есть, я даже юзал когда-то вроде, уже не помню.
спасибо за инфу, надо будет посмотреть...
>чем искал-то?Написал свою маленькую шуструю программку, позволяющую искать в разных кодировках и использующую фиксированный буфер памяти, но без регулярных выражений :)
http://sourceforge.net/projects/findstr/
а вот за открытый проект - плюсик
Ну разве что за это :)Потому что аффтар явно не осилил в дупель стандартную, требуемую POSIX'ом опцию -F (grep -F) ... Я так ищу в *.iso и *.gho и *.tib - пожирание быстро доходит до 500KiB и больше не растёт. Deban Lenny, размер имиджей - один DVD (4.3GB).
ну может он делал мультиплатформенную прогу? в виндах с такими фишками, как grep, вообще полный абзац. кстати, я про опцию -F не знал (стыдно!). просто сканировать как-то большие файлы не приходилось...
Под винду ж вроде существует пакет GNU утилит.
>ну может он делал мультиплатформенную прогу? в виндах с такими фишками, как
>grep, вообще полный абзац. кстати, я про опцию -F не знал
>(стыдно!). просто сканировать как-то большие файлы не приходилось...Cygwin существует и давно стабильно работает (http://cygwin.com)
Недавно доделали работу с UTF-8 в консоли (bash), что не может не радовать.
Там так же хорошо работают man и info.
хех. да знаю я про это, народ. только далеко не все вантузятники это знают.
> ну может он делал мультиплатформенную прогу? в виндах с такими фишками, как grep, вообще полный абзац. кстати, я про опцию -F не знал (стыдно!). просто сканировать как-то большие файлы не приходилось...Не кросплатформенную, я на Debian давно. Кстати если бы опция -F работала, то наверное не писал бы своего :)
> аффтар явно не осилил в дупель стандартную, требуемую POSIX'ом опцию -FОсилил и к сожалению проку от неё было немного. Если она сейчас работает как положено, то только рад :) да и моя программка актуальности не потеряла: и буфер можно задать и кодировки.
> Если она сейчас работает как положено, то только радТолько что потестил опцию F и ничего радостного...
dd if=/dev/zero of=test bs=1M count=2000
grep -F qwer testУ меня на ноутбуке всего 1 Гб и через несколько секунд я получил:
grep: test: Невозможно выделить памятьДля моей программки такие поиски для оперативки ничего не стоят, как собственно и поиски на /dev/sda :)
Не пойму ажиотажа.backreference NOT SUPPORTED. Вот и весь секрет трудоёмкость линейной.
Да там не только бекреференсы пострадали, а вообще все тяжелые операции, включая lookahead/lookbehind. Фигня, короче.
>Фигня, короче.Ну чего же сразу фигня то?
А если не нужны баки, а скорость и небольшое предсказуемое потребление рамы - нужны?PS: man grep, "Known Bugs" section:
Large repetition counts in the {n,m} construct may cause grep to use lots of memory. In addition, certain other obscure regular expressions require exponential time and space, and may cause grep to run out of memory.
Back-references are very slow, and may require exponential time.
>>Фигня, короче.
>
>Ну чего же сразу фигня то?
>А если не нужны баки, а скорость и небольшое предсказуемое потребление рамы - нужны?Тогда не нужно сравнивать с PCRE.
"Наш велосипед значительно выигрывает по массо-габаритным характеристикам у Бугатти Вейрон..."
"В RE2 полностью поддерживается синтаксис регулярных выражений Perl и PCRE."
НАГЛАЯ ЛОЖЬ!
http://code.google.com/p/re2/wiki/Syntax
"Grayed out expressions are not supported by RE2."
А таких там много.
>"Grayed out expressions are not supported by RE2."
>А таких там много.Согласен, что не мало, но там большая часть серого от VIM. Убрав его синтаксис картина становится лучше.
>>"Grayed out expressions are not supported by RE2."
>>А таких там много.
>
>Согласен, что не мало, но там большая часть серого от VIM. Убрав
>его синтаксис картина становится лучше.Лучше чего?
RE2 несравнима с PCRE по функционалу. Фактически, RE2 - куцое подмножество регулярных выражений вообще. Да, в этом подмножестве она может работать оптимальнее PCRE, что не удивительно. Но RE2 - это RE2, а PCRE - это PCRE.
Лично я уважаю PCRE за богатство функционала при конечности FSA :) и за возможность хранить прекомпилированные FSA для массового повторного использования.
>>Согласен, что не мало, но там большая часть серого от VIM. Убрав
>>его синтаксис картина становится лучше.
>
>Лучше чего?Лучше чем с особенностями VIM нереализованными в ни RE2 ни в PCRE :)
>>"Grayed out expressions are not supported by RE2."
>>А таких там много.
>
>Согласен, что не мало, но там большая часть серого от VIM. Убрав
>его синтаксис картина становится лучше.Угу. Ещё убрав синтаксис Perl и половину PCRE.
>>Согласен, что не мало, но там большая часть серого от VIM. Убрав
>>его синтаксис картина становится лучше.
>Угу. Ещё убрав синтаксис Perl и половину PCRE.Какой смысл здесь утрировать? Посмотрите сколько в % останется серого если убрать особенности vim. Или список даже просмотреть внимательно не удосужились?