.NET Проблемы со скоростью выполнения регулярных выражений
От: KarterFree  
Дата: 31.08.06 14:09
Оценка:
В процесе выполнения одной работы возникла потребность обрабатывать немного записей с базы данных MySQL (около 120000) Содержащих в себе данные о абонентах (ФИО, Адрес и тд.) и вывести данные в файл.

Проблема возникла при обработке номера дома и номера квартиры. Эти данные приходят ко мне в форме "12а/3" номер дома и "5б" номер квартиры.
В результате я должен получить строку вида "12;а;3;" для номера дома и "5;б;" для номера квартиры соответственно.

Для парсинга входящих строк я использую регулярные выражения и получил такой код.
Для дома:
str = str.Trim();
Regex reg = new Regex(@"(?<first>\d+)(?<firstch>[а-яіїє]*)(?<abort>\W*)(?<second>\d*)", RegexOptions.Compiled);
return reg.Match(str).Result("${first};${firstch};${second};");

где str входящая строка вида "12а/3".

Для квартиры:

str = str.Trim();
Regex reg = new Regex(@"(?<first>\d*)(?<firstch>[а-яіїє]*)", RegexOptions.Compiled);
return reg.Match(str).Result("${first};${firstch};");

где str входящая строка вида "5б".

Без обработки номера дома и номера квартиры программа выполняется приблизительно за 40 секунд. С использованием за 16 минут.

Не могу понять в чем проблема кода.

Или .NET так криво работает с регулярными выражениями...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.