![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 31.07.2009
Сообщений: 89
|
![]()
При использовании регулярных выражений(TRegExpr) возникает такая ошибка
![]() Использую вот такой код Код:
Последний раз редактировалось zver777; 06.05.2010 в 16:50. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 01.09.2009
Сообщений: 151
|
![]()
Есть предположение, что выходите за размерность массива.
вместо s:=regexpr1.Replace(s,regexpr1.Matc h[1]); попробуйте s:=regexpr1.Replace(s,regexpr1.Matc h[0]); |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 31.07.2009
Сообщений: 89
|
![]()
Если использовать regexpr1.Match[0], то получится, что будет текст заменяться на тот же текст.
Мне же надо из строки вида <blabla>text<blabla> при использовании реглуярки <blabla>(.*?)</blabla> заменить на text. |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 01.09.2009
Сообщений: 151
|
![]()
Прошу прощения. Действительно сморозил глупость.
Ваша проблема возникает из-за того, что внутри ф-ции Replace происходит вызов ExecNext. Из-за этого происходит повторный вызов этой самой ExecNext уже в Вашем коде, который и приводит к возникновению исключения. Вот пример рабочего кода, которым подсвечиваются ключевые слова: Код:
Если не хочется делать этого вручную, то - как мне кажется - придётся использовать два экземпляра TRegExp-а. Первый для того, что бы найти все совпадения, второй - что бы производить замены. Есть ещё вариант первым шагом построить список необходимых замен, после чего в цикле вызвать Replace для каждого элемента полученного списка. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с рамами/Проблема с ЖД | DRAGGER | Компьютерное железо | 6 | 04.01.2009 23:37 |