![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Библиотека RegEx с поиском в файлах?
AlexeyT © (2006-07-14 09:13:00)Ищется библиотека для поиска с регэкспами *в файлах*. Именно в файлах (файлы - это логи на сотни Мб), а не в загруженной строке, т.к. загружать все содержимое лога в строку естественно нельзя. Есть ли такие? Пока нашел PCRE, но она без этой фичи.
Конечно, можно было бы читать файл поблочно и проверять на совпадение блоки, но как это состыкуется с регэкспами (если вообще состыкуется), я пока не представляю. Так что желательна именно фича поиска в файле.
AlexeyT (2006-07-14 13:17:00) [1]Уточнение: поблочное (построчное) чтение файла и справнение на совпадение блоков наверное не пододут. Т.к. регэскп может описывать несколько строк, причем сколько строк - заранее не известно.
Если бы регэксп был однострочным (или, допустим, 5-ти строчным), то и вопроса бы не было.
Так что, желательно поиск библиотекой, а не так вручную.
DVM (2006-07-14 12:45:00) [2]
> > Где #0 встретится там и конец строки.
>
> длина строки типа string записана перед первым ее символом
> и не определяется символом #0
я имел ввиду для TRegExp. Он считает что конец строки.
umbra (2006-07-14 12:44:00) [3]напрмер,
procedure TForm1.Button1Click(Sender: TObject);
var
nullstr: String;
begin
nullstr := #0#0#0#0#0#0;
ShowMessage(IntToStr(length(nullstr)));
end;
umbra (2006-07-14 12:32:00) [4]
> Где #0 встретится там и конец строки.
длина строки типаstringзаписана перед первым ее символом и не определяется символом #0
DVM (2006-07-14 12:26:00) [5]
> а в чем между ними радикальное различие для регулярных выражений?
В том что тот TRegExpr который имеется сейчас обработает только часть строки до первого #0. Да там везде ему передаются строки типа string, откуда в них символ #0? Где #0 встретится там и конец строки.
> а разве сейчас он с ними не работает?
Нет, а те библиотеки, что для C - работают.
umbra (2006-07-14 12:16:00) [6]
> чтобы работал не со string, а с pchar
а в чем между ними радикальное различие для регулярных выражений?
> и со строками в которых могут встретиться, например, символы
> #0
а разве сейчас он с ними не работает?
TUser (2006-07-14 11:27:00) [7]grep запустить не пойдет?
DVM (2006-07-14 11:12:00) [8]А вот никто не видел аналога TRegExp, но чтобы работал не со string, а с pchar и со строками в которых могут встретиться, например, символы #0 ?
umbra (2006-07-14 10:52:00) [9]обычно логи пишутся построчно. Т.е. каждая строка - отдельное полное сообщение. Поэтому вполне достаточно читать файл построчно и эти строки анализировать.
nt (2006-07-14 10:09:00) [10]странно, я думал, readln проходят раньше, чем TStringList, и уж точно до regexp'ов.