Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.68/22: Рейтинг темы: голосов - 22, средняя оценка - 4.68
26 / 26 / 11
Регистрация: 08.08.2011
Сообщений: 1,172
1

Как ускорить регулярные выражения, не вынося их из функции

17.07.2012, 13:39. Показов 4591. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!

У меня есть функция compare(), в которой используется 50 регулярных выражений для поиска и(или) замены фрагментов.

Во время работы программы данная функция исполняется 10 тысяч раз (обрабатывает каждую строку). Таким образом, даже если в конце регулярного выражения написать RegexOptions.Compiled, то при следующей итерации функции это регулярное выражение заново будет compiled.

Я попробовал вынести регексы из функции compare() наверх - в функци "public partial class Form1 : Form", после чего программа заработала в 10 раз быстрее. Но теперь код стал очень неудобный - регулярные выражения объявлены в самом верху программы, а используются совсем в другом месте.

Каким образом можно ускорить функцию и оставить код читабельным?

Добавлено через 2 минуты
Там, где можно было использовать обычный replace, я использовал его, понятное дело.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.07.2012, 13:39
Ответы с готовыми решениями:

ЧПУ. Замена строк, регулярные выражения. Как правильно использовать переменную в регулярные выражения ?
Здравствуйте! Решил реализовать ЧПУ на своем сайте. Первый этап это замена всех реальных ссылок на...

Как Использовать регулярные выражения
Вычитал что есть какие то регулярные выражения, попробовал использовать их на практике но ничего не...

Как оформлять регулярные выражения?
Есть ли какой-нибудь мануал по их созданию? Просто никак не могу понять, как они оформляются :( ...

Как работают регулярные выражения
Нужно немного объяснить мне как работают регулярные выражения. Допустим есть String переменная и я...

21
26 / 26 / 11
Регистрация: 08.08.2011
Сообщений: 1,172
17.07.2012, 15:13  [ТС] 21
Author24 — интернет-сервис помощи студентам
Я по ошибке написал здесь с маленькой буквы.

Понятно, что пишу:
C#
1
code = Regex.Replace(code, (.+)/(?:20|19)(\\d\\d)$, "$1/$2");
или

C#
1
code = re1.Replace(code, "$1/$2");
0
117 / 114 / 10
Регистрация: 02.06.2011
Сообщений: 280
18.07.2012, 01:05 22
Цитата Сообщение от Suppir Посмотреть сообщение
Каким образом можно ускорить функцию и оставить код читабельным?
а мне вот интересно по твоему код где метод на 800-900 строк читабелен? и чем собственно вынесение регекспов статическими членами сделает его (код) еще более сложным?
в твоем случае следует основательно занятся рефакторингом ИМХО
1
18.07.2012, 01:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.07.2012, 01:05
Помогаю со студенческими работами здесь

Как работают регулярные выражения?
Здравствуйте, только начал изучать регулярные выражения PCRE. И не могу найти годную для ума...

Как составляются регулярные выражения?
Здравствуйте, до меня не как не допрет как работает регулятор выражений. Допустим есть строки. ...

Как вставить картинку, регулярные выражения
Здраствуйте, столкнулся с такой задачей, У нас есть файл deferate.xspf: <?xml version="1.0"...

Как Регулярные Выражения Прикрутить К Lotusscript?
вобщем ситуация следующая есть проверка поля под ява скрипт, и занимает изза регулярного выражения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru