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