Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.27;
Скачать: CL | DM;

Вниз

Библиотека 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.035 c
2-1154789460
Sele
2006-08-05 18:51
2006.08.27
Удаление


15-1153207818
novoalex
2006-07-18 11:30
2006.08.27
FreeBSD


3-1150883161
312Kbps
2006-06-21 13:46
2006.08.27
Выбор записи в DBLookupComboBox !


15-1154517741
KygECHuK
2006-08-02 15:22
2006.08.27
dcc32


2-1154545546
Klever
2006-08-02 23:05
2006.08.27
DateTimePicker