ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

чтото внеземное с циклами repeat и while
  #1  
Старый 11.12.2009, 22:22
SultanOFF
Участник форума
Регистрация: 04.06.2009
Сообщений: 176
Провел на форуме:
840493

Репутация: 0
По умолчанию чтото внеземное с циклами repeat и while

Здравствуйте. Есть текст(StrPage) и там с помощью регулярок ищу мыльники. Ищу и пытаюсь их добавить в мемо, но сначало проверяя на дубликаты. Делаю это вот так:
Код:
if Reg2.Exec(StrPage) then   //strPage содержится html код страницы, reg2.exec  проверяет его на наличие мыл
 begin
 repeat    
  for i:=0 to memo1.Lines.Count-1 do
    if reg2.Match[0]<>Memo1.Lines[i] then    //в reg2.Match[0] содержится мыло и если его нет в memo1
     Memo1.Lines.Add(reg2.Match[0])     //то собсвтенно и добавляем это мыло в мемо1
until not Reg2.ExecNext;    //переходим к следущему мылу в strPage
 end;
но вместо того что Я ожидаю бесконечное добавление одних и тех же мыльников. Пытался делать и так
Код:
X := Reg2.Exec(StrPage);
while X do
 begin
 for i:=0 to memo1.Lines.Count-1 do
      if reg2.Match[0]<>Memo1.Lines[i] then
      Memo1.Lines.Add(reg2.Match[0]);
 X := Reg2.ExecNext;
 end;
но теперь уже просто пустота
Почему? Помогите пожалуйста!
 
Ответить с цитированием

  #2  
Старый 12.12.2009, 06:34
DeaD_MoroZ
Banned
Регистрация: 03.11.2009
Сообщений: 112
Провел на форуме:
98006

Репутация: 17
Отправить сообщение для DeaD_MoroZ с помощью ICQ
По умолчанию

он у тебя в первом коде проверяет ни равно ли мыло текушей позиции в мемо, если не равно добавляет его... и так дальше...
 
Ответить с цитированием

  #3  
Старый 12.12.2009, 06:56
SultanOFF
Участник форума
Регистрация: 04.06.2009
Сообщений: 176
Провел на форуме:
840493

Репутация: 0
По умолчанию

Код:
if Reg2.Exec(StrPage) then
 begin
 repeat
  for i:=0 to memo1.Lines.Count-1 do begin
    if reg2.Match[0]<>Memo1.Lines[i] then begin
     Memo1.Lines.Add(reg2.Match[0]) ;
     break;
    end
  end;
until not Reg2.ExecNext;
 end;
теперь уже снова пустота
 
Ответить с цитированием

  #4  
Старый 12.12.2009, 07:10
DeaD_MoroZ
Banned
Регистрация: 03.11.2009
Сообщений: 112
Провел на форуме:
98006

Репутация: 17
Отправить сообщение для DeaD_MoroZ с помощью ICQ
По умолчанию

ну как то так...
Код:
if Reg2.Exec(StrPage) then   begin
k:=0;
 repeat    
  for i:=0 to memo1.Lines.Count-1 do
    if reg2.Match[0]<>Memo1.Lines[i] then   
   inc(k);
     
if k=memo1.Lines.Count-1 then
  Memo1.Lines.Add(reg2.Match[0])  

until not Reg2.ExecNext;   
 end;
 
Ответить с цитированием

  #5  
Старый 12.12.2009, 12:06
SultanOFF
Участник форума
Регистрация: 04.06.2009
Сообщений: 176
Провел на форуме:
840493

Репутация: 0
По умолчанию

DeaD_MoroZ все равно вместо мыл получается одна пустота
 
Ответить с цитированием

  #6  
Старый 12.12.2009, 14:27
Gar|k
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме:
991929

Репутация: 395


По умолчанию

SultanOFF у тебя регулярка то правильная?
 
Ответить с цитированием

  #7  
Старый 12.12.2009, 16:33
SultanOFF
Участник форума
Регистрация: 04.06.2009
Сообщений: 176
Провел на форуме:
840493

Репутация: 0
По умолчанию

ну да, потому что если у Меня цикл как в первом посте то мыльники добавляюся

только что попробовал чтото теперь та регулярка не добавляет ничего, вот регулярка Reg2.Expression:= '[\w\d\-\.]+@[\w\d\-]+\.ru' которая выдирает мыльники

Последний раз редактировалось SultanOFF; 12.12.2009 в 16:49..
 
Ответить с цитированием

  #8  
Старый 12.12.2009, 17:03
Gar|k
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме:
991929

Репутация: 395


По умолчанию

по ссылке лень тыкнуть?

Цитата:
Извлечение email-адреса даже если он обрамлен служебными знаками

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

$text = '"Vasiliy Ivanovitch" y@mail.org.kol.ru (*ColdplayC*) "l@mbr.uk.com" kol@kol.com serjio k <orba@kimori.org.ua>, serjio k <orba1@kimori.org.ua>';

$out = array();

preg_match_all('/[\.\-_A-Za-z0-9]+?@[\.\-A-Za-z0-9]+?[\
.A-Za-z0-9]{2,}/', $text, $out);

# $out[1] будет содержать массив email-адресов:
# y@mail.org.kol.ru
# l@mbr.uk.com
# kol@kol.com
# orba@kimori.org.ua
# orba1@kimori.org.ua

Serjio, 11.05.2007.
 
Ответить с цитированием

  #9  
Старый 12.12.2009, 19:58
SultanOFF
Участник форума
Регистрация: 04.06.2009
Сообщений: 176
Провел на форуме:
840493

Репутация: 0
По умолчанию

все фуух проблему решил кажется наконец вот таким способом:
Код:
procedure dubl;
var
  SL : TStringList;
  i, i2 : integer;
  flag : Boolean;
begin
  SL := TStringList.Create;
  SL.AddStrings(form1.Memo1.Lines);
 for i := form1.Memo1.Lines.Count - 1 downto 0 do
  begin
   flag := False;
   for i2 := SL.Count - 1  downto  0 do
    begin
      if form1.Memo1.Lines[i] = SL.Strings[i2] then
         if flag then
          SL.Delete(i2)
          else
          flag := True;
    end;
  end;
  form1.Memo1.Clear;
  form1.Memo1.Lines.AddStrings(SL);
  SL.Free;

 end;

 function bbo(s:string):boolean;
 var i:integer;
 flag:boolean;
 begin
 flag:=true;
    for i:=0 to form1.memo1.Lines.Count do   begin
     if s=form1.Memo1.Lines[i] then
   begin

flag:=false;

   end;
if flag then begin

  form1.Memo1.Lines.Add(s) ;
  break;
end;
  end;
end;
и использую эти процедуры и функции вот так:
Код:
if Reg2.Exec(StrPage) then   begin
 repeat  begin
bbo(reg2.Match[0]);
dubl;
application.ProcessMessages;
 end;
until not Reg2.ExecNext;
 end;
ничего оригинальней не придумал, просто при каждом добавлении нового мыла содержимое мемо переносится в тстринГлист и уже оттуда свойством dublicate удаляются дубликаты ну и заново заносятся в мемо. Если у кого есть другие идеи, то пишите пожалуйста
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ