Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2014, 23:14   #1
Gdasar
Пользователь
 
Регистрация: 18.02.2013
Сообщений: 60
По умолчанию Проблема с RegExp

Доброго времени суток форумчане.
Код:
TRegExpr *Reg = new TRegExpr;
TStringList* Text=new TStringList;
Text->LoadFromFile(ExtractFileDir(Application->ExeName)+"\\t.txt");
Reg->ModifierM = true;
Reg->InputString=Text->Text;
Reg->Expression = "\\{T\\}(.*?)\\{/T\\}";
Reg->Compile();
if(Reg->Exec(Reg->InputString))
	do
	{
		Text->Text=Reg->Replace(Reg->InputString, Reg->Match[1], false);
	}
	while(Reg->ExecNext());
Reg->Free();
Text->SaveToFile(ExtractFileDir(Application->ExeName)+"\\t_new.txt");
Text->Free();
Данный код должен найти, например,
Код HTML:
{T} help {\T}
или
Код HTML:
{T} 
help 
{\T}
и заменить просто на
Код HTML:
help
Но появляется ошибка:
Код HTML:
TRegExpr(exec): ExecNext Without Exec[Pos]
Я что-то не могу никак понять, из-за чего. Может в логике косяк?! Помогите разобраться.

Последний раз редактировалось Stilet; 06.03.2014 в 23:38.
Gdasar вне форума Ответить с цитированием
Старый 07.03.2014, 23:35   #2
Gdasar
Пользователь
 
Регистрация: 18.02.2013
Сообщений: 60
По умолчанию

Я понял в чем ошибка. Она заключается в том,что regexp заменяет все соответствия шаблону за одну итерацию. Вот программа и говорит, что соответствий шаблону больше нет и заменять больше нечего. Но как сделать так, что бы regexp производил не сразу замену всего текста,соответствующего шаблону, а под каждое вхождение делал свою(нужную) самену.
Пример:
Код HTML:
{T} 
help 
{\T}
{T} 
programmersforum
{\T}
Результат должен быть не такой:
Код HTML:
help
help
а вот такой:
Код HTML:
help
programmersforum
Подскажите, как реализовать это программно.
Gdasar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с RegExp Руслантус Общие вопросы .NET 3 26.02.2011 21:01
regexp в С++ Пепел Феникса Общие вопросы C/C++ 2 10.11.2010 18:26
Regexp на чистом С++ 1datr Общие вопросы C/C++ 1 05.11.2010 21:44
C++ Builder RegExp Namolem Помощь студентам 1 19.01.2010 23:13
выделить из строки (regexp) NieL Общие вопросы Delphi 2 23.06.2009 08:21