Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите пожалуйсто с TRegExp, Не получаеться регулярное выражение 
:(
    Опции темы
sergio393
  Дата 19.8.2010, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 19.8.2010

Репутация: нет
Всего: нет



Здарвствуйте, момогите пожалуйсто составить регулярное выражение в TRegExp, я уже долго мучаюсь и ничего не получаеться. 

дан текст, точнее исходный текст web-страницы, и в тексте содержатся допустим три строки разделённых междуй собой двумя двоеточиями ::

пример

трататратратартаратартра
БЮБЮвафываываываываыв
::string::string2::string3::
ываываываываываываываыв
ываваыыаываываываываываы

мне надо извлечь из всего текста эти три сроки

В PHP я так делал 
Код

    preg_match('/::(.+)::/',$response,$match);


Но в TRegExp ничего не получаеться. т.е. не кореектно.

Помогите пожалуйсто мне.
PM MAIL   Вверх
cat512
Дата 20.8.2010, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 438
Регистрация: 20.3.2007

Репутация: 7
Всего: 15



Цитата(sergio393 @ 19.8.2010,  20:51)
Здарвствуйте, момогите пожалуйсто составить регулярное выражение в TRegExp, я уже долго мучаюсь и ничего не получаеться. 

дан текст, точнее исходный текст web-страницы, и в тексте содержатся допустим три строки разделённых междуй собой двумя двоеточиями ::

пример

трататратратартаратартра
БЮБЮвафываываываываыв
::string::string2::string3::
ываываываываываываываыв
ываваыыаываываываываываы

мне надо извлечь из всего текста эти три сроки

В PHP я так делал 
Код

    preg_match('/::(.+)::/',$response,$match);


Но в TRegExp ничего не получаеться. т.е. не кореектно.

Помогите пожалуйсто мне.

Слэшуеш зачем?
Код

var
  T, Pattern: string;
begin
  Pattern := '::(.+)::';
  T := 'блабпоалдыопвоалдвож';
  Repeat 
  Until  not TRegExpr.Exec(T, Pattern) ;
end;



PM MAIL   Вверх
cat512
Дата 20.8.2010, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 438
Регистрация: 20.3.2007

Репутация: 7
Всего: 15



Цитата(cat512 @ 20.8.2010,  22:12)
Цитата(sergio393 @ 19.8.2010,  20:51)
Здарвствуйте, момогите пожалуйсто составить регулярное выражение в TRegExp, я уже долго мучаюсь и ничего не получаеться. 

дан текст, точнее исходный текст web-страницы, и в тексте содержатся допустим три строки разделённых междуй собой двумя двоеточиями ::

пример

трататратратартаратартра
БЮБЮвафываываываываыв
::string::string2::string3::
ываываываываываываываыв
ываваыыаываываываываываы

мне надо извлечь из всего текста эти три сроки

В PHP я так делал 
Код

    preg_match('/::(.+)::/',$response,$match);


Но в TRegExp ничего не получаеться. т.е. не кореектно.

Помогите пожалуйсто мне.

Слэшуеш зачем?
Код

var
  T, Pattern: string;
begin
  Pattern := '::(.+)::';
  T := 'блабпоалдыопвоалдвож';
  Repeat 
  Until  not TRegExpr.Exec(T, Pattern) ;
end;


Правда вышеприведённый код бесполезен для тебя. Для того что бы получить значения строк из кармана надо использовать свойство - массив Match.
А для этого надо восполбзоваться не классовой функцией( как в приведённом примере), а  инстанциировать объект и заюзать его объектные методы.
Например:
Код

//пишу по памяти, возможно где нибудь ошибусь :-)!
var
   i: integer;
   Regexpr: TRegexpr;
   T, Pattern: string;
   Result: Boolean;
begin
   T := 'sdadfdasfdsfds';
   Pattern := '::(.+)::';
   Regexpr := TRegExpr.Create()
   try
     Regexpr.Expression := Pattern;
     Regexpr.InputString := T;
     Result := RegExpr.Exec;
     if not Result then ShowMessage('Нет совпадений!!!');
     Repeat
        Result := Regexpr.ExecNext;
     until not Result;
     for i := 0 to RegExpr.SubExprMatchCount -1 do
       ShowMessage(RegExpr.Match[i]);
   finally
     Regexpr.free;
   end;
end;

Что то вроде такого
PM MAIL   Вверх
drkot
Дата 24.8.2010, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



'::(.*?)::(.*?)::(.*?)::'
собственно три строки... один запрос и три под строки лежат в масиве

Добавлено через 49 секунд
стоит всегда ображать внимание на "жадность"


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0431 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.