Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Поиск текста (http://forum.oszone.net/showthread.php?t=245824)

ddv122 30-10-2012 17:49 2015212

Поиск текста
 
Доброго дня. Помогите у меня есть к примеру текст(исходный код станицы)
Мне нужно из него вывести к примеру в Memo всю текстовую информацию.
Ка это лучше сделать?
Код:

<!-- message -->        <div id="post_message_136410" >                      НЕ удаляйте времено)История<br />  28/10/2012<br />  ViasatBaltic        </div>        <!-- / message -->
как я понел, создаем 3 переменные
Код:

a = Memo1->Lines->Text. P o s ( " < d i v i d = " p o s t _me s s a g e _ 1 3 6 4 1 0 "> " ) ;
b = Memo1->Lines->Text. P o s ( " </div> " );
c=  Memo1->Lines->Text . P o s ( " < / br > " );

А начало, b конец, с новая строка.
А как поиск организовать ?
Код:

В идеале должно выйти что то вроде
НЕ удаляйте времено)История
28/10/2012
ViasatBaltic


ferget 30-10-2012 19:46 2015292

Проще регулярные выражения использовать, можно подключить дельфийский Regexpr.pas

Project->Add to project (выбираешь pas)
Project->Build project
Затем в нужном модуле пишешь #include <*.hpp>
который был скомпилирован.

ddv122 31-10-2012 00:51 2015496

а если не затруднит, можно пример проекта?

ferget 31-10-2012 06:52 2015594

Вложений: 1
Вот пример, строка уже вписана в Edit1, так что просто нажмите кнопку

ddv122 31-10-2012 13:26 2015749

спасибо, вечером проверю.
И вопрос не много не по теме ...
Вы случайно не работали с компонентом quickreport?

ferget 31-10-2012 13:45 2015770

Цитата:

Цитата ddv122
Вы случайно не работали с компонентом quickreport? »

Нет, не приходилось

ddv122 31-10-2012 15:01 2015804

а ссылку на вложение можно получить как нибудь таким методом?
Код:

    <!-- / message -->
      <!-- attachments -->
        <div style="padding:6px">
            <fieldset class="fieldset">
              <legend>Вложения</legend>
              <table cellpadding="0" cellspacing="3" border="0">
              <tr>
    <td>
<img class="inlineimg" src="images/attach/rar.gif" alt="Тип файла: rar" width="16" height="16" border="0" style="vertical-align:baseline" /></td>
    <td><a href="attachment.php?attachmentid=27766&amp;d=1351617788">test.rar</a> (2.1 Кб, 34 просмотров&nbsp;<a href="whodownloaded.php?do=whodownloaded&s=&attachmentid=27766" onclick="whodownl_call_ajax_window(this, 'whodownl_main_container', 'whodownl_dragdrop_container'); return false;">Кто скачивал?</a>)</td>
</tr>
              </table>
            </fieldset>
        </div>
      <!-- / attachments -->

что бы вышло attachment.php?attachmentid=27766&d=1351617788?

ddv122 31-10-2012 15:42 2015841

аа expression это скрывает теги, по маске?я прав?
Проще наверно сделать поиск по строке attachment.php?
attachmentid , так как больше влажений на странице не будет.Может есть у вас идея?

ferget 31-10-2012 17:16 2015899

Если строка одна на странице, то ,конечно, лучше просто найти подстроку

ddv122 31-10-2012 18:08 2015940

да строка одна, это постоянная attachment.php?attachmentid=и здесь ид влажение, но он не постоянный.
attachment.php?attachmentid=27766&amp;d=1351617788
А как вытянуть эту ссылку?..больше ссылок 100% не будет.но ид меняется....

ferget 31-10-2012 18:31 2015955

Цитата:

Цитата ddv122
но ид меняется. »

На сколько меняется? Если длина одинаковая, то просто посчитать

ddv122 31-10-2012 19:29 2015982

Цитата:

Цитата ferget
На сколько меняется? »

не известно.Суть работы - нужно скачивать архив(вложение) с форума, ссылка на пост постоянная, а ссылка вложение меняется при обновлении вложения.(примерно раз в день)
Начало ссылки attachment.php?attachmentid
и заканчивается ">test.rar
И 100% не повторяются эти слова

ddv122 08-11-2012 13:30 2021491

ferget, может пригодится
Код:

  int begin= Text.Pos("attachment.php?");
    int end= Text.Pos("\">test.rar");
    if( begin && end )  Str= Text.SubString(begin,end-begin+String("").Length() );
    Str = StringReplace(Str,"amp;","",TReplaceFlags()<<rfReplaceAll);

И получаем ссылку)

ddv122 18-01-2013 17:16 2069706

ferget, Привет, может подскажите
Обрабатываю примерно 50 строк...
Такого вида:
Дима:Привет:122:11/1111/1:Один:Два:0102030405060708091011121314 #Первая строка
Маша:Привет:122:11/1111/1:Один:Два:0102030405060708091011121314 #Третья строка

Хочу исключить строки(мусор) которые не похожи на эти строки
к примеру
трата та....
11141..
22122
..
Пытался так -
Код:

TRegExpr* RegExp=new TRegExpr();
    AnsiString str;
    AnsiString InputStr = str;
    for( int i=0; i<mmo1->Lines->Count;i++ )
{
    str=mmo1->Lines->Strings[i];
    RegExp->Expression="(\\w+):(\\w+):(\\d+):\\d*/\\d*/\\d*:(\\w+):(\\w+):(\\d+) #(\\w+ \\w+)";
    RegExp->Compile();
    InputStr=RegExp->Replace(str,"",false);
    Memo2->Lines->Add(InputStr);

Но все равно не фильтрует строки...
Может подскажите ошибку?


Время: 09:16.

Время: 09:16.
© OSzone.net 2001-