Главная страница
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.043 c
15-1154422757
cyborg
2006-08-01 12:59
2006.08.27
В этом году жёсткому диску исполнится 50 лет


6-1144091609
Velimir
2006-04-03 23:13
2006.08.27
Чат в локальной сети с динамическим IP (tcp)


2-1154609678
webpauk
2006-08-03 16:54
2006.08.27
TreeView select item


3-1149573959
Scorpio
2006-06-06 10:05
2006.08.27
Создание кусора или что то на него похожее


9-1133725230
Click
2005-12-04 22:40
2006.08.27
Ищу урок