Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
[Delphi] "Одноразовое" рег. выражение |

30.05.2009, 08:58
|
|
Участник форума
Регистрация: 27.04.2008
Сообщений: 224
Провел на форуме: 140661
Репутация:
313
|
|
[Delphi] "Одноразовое" рег. выражение
Здравствуйте. Столкнулся со следующей проблемой. Мне нужно из текста (ответ на http-запрос) выдернуть все совпадения с выражением
Код:
<li><h3><a href="(.*)"
Использую библиотеку RegExpr (regexpstudio.com) я получил следующий код
Код:
HResult := idHttp1.Get('http://.....');
regexptpl := '<li><h3><a href="(.*)"';
with TRegExpr.Create do try
Expression := regexptpl;
ModifierI := true;
ModifierS := true;
ModifierG := false;
if Exec(HResult) then begin
showmessage(Match[1]);
end;
finally Free;
end;
Но он находит только первое совпадение из всего текста. Оно помещается ячейку 1 массива Match и всё, остальные ячейки пусты. Но совпадений в полученном тексте должно быть около 10. Помню с подобной проблемой сталкивался в php и решил её с использованием preg_match_all вместо preg_match. Покопавшись по документации к используемой библиотеке я ничего не нашёл. Единственное на что обратил внимание - функция ExecNext. Я думал что при каждом вызове она будет искать следующее совпадение, но она тоже зацикливалась на 1-ом свопадении.
Если кто сталкивался с подобной проблемой, помогите пожалуйста.
Последний раз редактировалось Kuzya; 30.05.2009 в 09:00..
|
|
|

30.05.2009, 09:36
|
|
Познающий
Регистрация: 23.05.2009
Сообщений: 35
Провел на форуме: 104584
Репутация:
32
|
|
а pos(); не проще будет?
http://forum.antichat.ru/thread119447.html
Последний раз редактировалось JeDaSe; 30.05.2009 в 09:42..
|
|
|

30.05.2009, 09:54
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме: 6075534
Репутация:
2731
|
|
Здравствуйте. Столкнулся со следующей проблемой. Мне нужно из текста (ответ на http-запрос) выдернуть все совпадения с выражением
Код:
<li><h3><a href="(.*)"
Использую библиотеку RegExpr (regexpstudio.com) я получил следующий код
Код:
HResult := idHttp1.Get('http://.....');
regexptpl := '<li><h3><a href="(.*)"';
with TRegExpr.Create do try
Expression := regexptpl;
ModifierI := true;
ModifierS := true;
ModifierG := false;
if Exec(HResult) then begin
showmessage(Match[1]);
end;
finally Free;
end;
Но он находит только первое совпадение из всего текста. Оно помещается ячейку 1 массива Match и всё, остальные ячейки пусты. Но совпадений в полученном тексте должно быть около 10. Помню с подобной проблемой сталкивался в php и решил её с использованием preg_match_all вместо preg_match. Покопавшись по документации к используемой библиотеке я ничего не нашёл. Единственное на что обратил внимание - функция ExecNext. Я думал что при каждом вызове она будет искать следующее совпадение, но она тоже зацикливалась на 1-ом свопадении.
Если кто сталкивался с подобной проблемой, помогите пожалуйста.
Юзай цикл
Код:
while not ExecNext...
а pos(); не проще будет?
http://forum.antichat.ru/thread119447.html
Регулярки удобнее.
|
|
|

30.05.2009, 13:23
|
|
Участник форума
Регистрация: 27.04.2008
Сообщений: 224
Провел на форуме: 140661
Репутация:
313
|
|
mailbrush, спасибо!
|
|
|
|
 |
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Узнать главный диск [Delphi]
|
Sin3v |
С/С++, C#, Delphi, .NET, Asm |
7 |
01.04.2009 11:46 |
|
Экранный шпион [Delphi]
|
Amper128 |
С/С++, C#, Delphi, .NET, Asm |
5 |
24.03.2009 20:11 |
|
PP.UA новый украинский домен - рег идет
|
vvs777 |
Мировые новости |
4 |
17.03.2009 17:51 |
|
[Delphi] помогите достать исходники ИИ
|
mrVoodoo |
С/С++, C#, Delphi, .NET, Asm |
1 |
13.02.2009 20:55 |
|
Как запускаются файлы рег через консоль?
|
c0m |
Windows |
1 |
05.02.2009 20:25 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|