Нужно мне свои регулярные выражения заимплементить, но проблемма в том, что приложение критично к памяти и скорости. Соответственно полные матрицы переходов размера N*m (N -- мощность алфавита, m -- длина шаблона) не устраивают.
Возможна ли компиляция регекспов (составление матрицы переходов для DFA) сразу для нескольких паттернов? Матрица переходов получается разреженной -- возможно ли ее эффективное сжатие (без существенной потери перформанса)?
Очень нужныконкретные советы и ссылки на материалы по оптимизации регекспов. В гугле ничего по существу не нашел (по методам реализации движков для регекспов). Смотрю glibc -- пока не особо понятно...
Попробуй re2c03.04.06 13:33 Автор: amirul <Serge> Статус: The Elderman
Правда синтаксис не grep/perl (flex-подобный), но все равно разбор лексики на основе регэкспов. С исходниками естественно
> Здравствуйте! > > Нужно мне свои регулярные выражения заимплементить, но > проблемма в том, что приложение критично к памяти и > скорости. Соответственно полные матрицы переходов размера
Скорость обещают в 2-3 раза быстрее, чем flex. Размер, насколько я понимаю, будет соптимизирован компилятором: для сильно разреженных case-таблиц, компиляторы генерируют бинарный поиск (естественно с логарифмическим временем), хотя в каждом состоянии количество переходов не очень большое. Да и скорость ВСЕ РАВНО получается в 2-3 раза быстрее табличного flex-а.
> N*m (N -- мощность алфавита, m -- длина шаблона) не > устраивают. > > Возможна ли компиляция регекспов (составление матрицы > переходов для DFA) сразу для нескольких паттернов? Матрица > переходов получается разреженной -- возможно ли ее > эффективное сжатие (без существенной потери перформанса)?
> Очень нужныконкретные советы и ссылки на материалы по > оптимизации регекспов. В гугле ничего по существу не нашел > (по методам реализации движков для регекспов). Смотрю glibc > -- пока не особо понятно...
Помогите с регулярным выражением22.05.06 18:07 Автор: lda Статус: Незарегистрированный пользователь
Нужно вытащить из результатов поиска Яндекса 10 найденых урлов сайтов, есть код:
$yaurl = 'http://www.yandex.ru/yandsearch?text=слово&stype=www';
$page = file_get_contents($yaurl); preg_match_all("lt;li value[^<]*<[^<]*<[^ ]* [^ ]* href=\"([^\"]*)|i",$page,$out,PREG_PATTERN_ORDER);
foreach ($out[0] as $anchor)
{
echo $anchor."<br><br>";
}
Но массивы возврашаются пустые :(
как быть ?