Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| |
Помогите с регулярным выражением 22.05.06 18:07 Число просмотров: 2870
Автор: 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>";
}
Но массивы возврашаются пустые :(
как быть ?
|
<theory>
|
оптимизация регулярных выражений 02.04.06 00:02
Автор: lunc <Alexander Krizhanovsky> Статус: Member
|
Здравствуйте!
Нужно мне свои регулярные выражения заимплементить, но проблемма в том, что приложение критично к памяти и скорости. Соответственно полные матрицы переходов размера N*m (N -- мощность алфавита, m -- длина шаблона) не устраивают.
Возможна ли компиляция регекспов (составление матрицы переходов для DFA) сразу для нескольких паттернов? Матрица переходов получается разреженной -- возможно ли ее эффективное сжатие (без существенной потери перформанса)?
Очень нужныконкретные советы и ссылки на материалы по оптимизации регекспов. В гугле ничего по существу не нашел (по методам реализации движков для регекспов). Смотрю glibc -- пока не особо понятно...
|
|
Попробуй re2c 03.04.06 13:33
Автор: amirul <Serge> Статус: The Elderman
|
http://re2c.org/
Правда синтаксис не grep/perl (flex-подобный), но все равно разбор лексики на основе регэкспов. С исходниками естественно
> Здравствуйте! > > Нужно мне свои регулярные выражения заимплементить, но > проблемма в том, что приложение критично к памяти и > скорости. Соответственно полные матрицы переходов размера
Скорость обещают в 2-3 раза быстрее, чем flex. Размер, насколько я понимаю, будет соптимизирован компилятором: для сильно разреженных case-таблиц, компиляторы генерируют бинарный поиск (естественно с логарифмическим временем), хотя в каждом состоянии количество переходов не очень большое. Да и скорость ВСЕ РАВНО получается в 2-3 раза быстрее табличного flex-а.
> N*m (N -- мощность алфавита, m -- длина шаблона) не > устраивают. > > Возможна ли компиляция регекспов (составление матрицы > переходов для DFA) сразу для нескольких паттернов? Матрица > переходов получается разреженной -- возможно ли ее > эффективное сжатие (без существенной потери перформанса)?
Можешь глянуть на способы упаковки разреженных матриц в burg:
http://www.google.com/search?hs=PqK&hl=en&lr=&client=opera&rls=en&q=burg+code+generation&btnG=Search
Не пугайся слова кодогенерация, насколько я понимаю, она производится при помощи грамматик (на грамматиках регэкспы сделать можно).
> Очень нужныконкретные советы и ссылки на материалы по > оптимизации регекспов. В гугле ничего по существу не нашел > (по методам реализации движков для регекспов). Смотрю 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>";
}
Но массивы возврашаются пустые :(
как быть ?
|
|
|