Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Библиотека 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'ов.


Наверх

Титульная страница Поиск, карта сайта Написать письмо