Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Delphi - RegExp (Регулярные выражения) (https://forum.antichat.xyz/showthread.php?t=119447)

mailbrush 06.05.2009 23:23

Delphi - RegExp (Регулярные выражения)
 
Либо я что-то не так делаю, либо TRegExpr криво пашет. Есть HTML-страничка. Пытаюсь вывести все ссылки
Код:

RegExp1.Expression:='<a href=(.*) .*>';
При выводе
Код:

RegExp1.Match[0]
- выводит криво, а т.е. весь документ.
Код:

RegExp1.Match[1]
Так пусто. Посоветуйте как решить эту траблу, или норм. компоннент для регулярок в дельфи.

LEE_ROY 06.05.2009 23:27

http://forum.vingrad.ru/articles/topic-213075.html

mailbrush 06.05.2009 23:53

Ну тыкнул ты ссылку, и что? Синтаксис регулярок я знаю. Эту же регулярку применил в PHP - все заработало. Тут - нету. Нечего сказать - промолчи!

-Hormold- 07.05.2009 00:03

Код:

const
  EmailRE = '<title>(.*)</title>';
var
code,tmp,html:string;
r : TRegExpr;
begin
html:='<title>епт</title>';
r := TRegExpr.Create;
try
    r.Expression := EmailRE;
    if r.Exec () then
      REPEAT
      tmp:=r.Match [1];
      code := code + tmp;
      UNTIL not r.ExecNext;
    finally r.Free;
  end;
ShowMessage(code);


eLWAux 07.05.2009 00:04

Hormold, думаш в файле много title'ов? )

eLWAux 07.05.2009 00:10

Код:

var RegExp : TRegExpr;
    input : string;
begin
 input := 'Memo1<a href="http://abc.def">nana</a>sabd<a href="http://aaabc.def">nangga</a>as';
 RegExp := TRegExpr.Create;

 RegExp.Expression := '<a href="(.+?)">(.+?)</a>';
 if RegExp.Exec(input) then
      repeat
        showmessage('Name: '+RegExp.Match[2]+#13#10+
                    'Url:  '+RegExp.Match[1]);
      until not RegExp.ExecNext;


/^scriptor$/ 20.05.2009 00:48

вот так привильно:
Код:

RegExp1.Expression:='<a href=(.?*) .*>';

LEE_ROY 20.05.2009 02:36

Цитата:

Сообщение от mailbrush
Ну тыкнул ты ссылку, и что? Синтаксис регулярок я знаю. Эту же регулярку применил в PHP - все заработало. Тут - нету. Нечего сказать - промолчи!

ололо

Fepsis 23.09.2009 01:24

В силу того, что сайт http://regexpstudio.com/ сейчас по каким-то причинам в дауне, прошу поделиться тем, что было тут http://regexpstudio.com/downloads/regexpr_ru.zip
В большей степени интересует документация, сам компонент я нашёл..)

Chrome~ 23.09.2009 19:08

Не знаю, то ли ты ищешь, или нет, но вот возьми этот Help файл. В нем описаны основные принципы работы с компонентом и примеры регулярных выражений.
Код:

http://rapidshare.com/files/283957681/Help.rar.html

Fepsis 24.09.2009 00:58

Код:

      RegExp := TRegExpr.Create;
      HTMLStr :=  'шлак ыврафып<title>ололо!!!!!11</title>шлак фываыв';
      RegExp.Expression := '<title>(.+?)</title>';
      RegExp.Exec(HTMLStr);
      ShowMessage(RegExp.Match[0]);

Выаёт результат <title>ололо!!!!!11</title> (вместе с тегами тайтла)
Пробовал разные комбинации (.+?), (.+), (.*?), (.*) - безрезультатно... :confused:
Как вытащить без тайтлов..?! :rolleyes:

Chrome~ 24.09.2009 16:25

У тебя правильно составлена регулярка. Наверное нужно делать:
Код:

ShowMessage(RegExp.Match[1]);

Fepsis 24.09.2009 19:21

Цитата:

Сообщение от Chrome~
У тебя правильно составлена регулярка. Наверное нужно делать:
Код:

ShowMessage(RegExp.Match[1]);

:eek: Вот блин.. Так и есть...
Не понимаю, а зачем он в RegExp.Match[0] это пихает.. :confused:

wolmer 29.09.2009 00:08

Народ скиньте компонент RegExp для делфи пожалуйста! (ссылки в теме битые, а в гугле нету)

Fepsis 29.09.2009 17:31

Цитата:

Сообщение от wolmer
Народ скиньте компонент RegExp для делфи пожалуйста! (ссылки в теме битые, в гугле нету)

http://www.delphisources.ru/files/sources/raznoe/2007_year/regexp_debugger.zip
Там в архиве файл RegExpr.pas как раз и есть этот компонент..)


Время: 00:02