提取页面的中的url类似以下html代码
<a href="aaa.htm">title</a>
<a href='aaa.htm'>title</a>
<a href=aaa.htm>title</a>
<a href= aaa.htm >title</a>
求一正则表达式,能把链接地址aaa.htm以及后面的title提取出来

解决方案 »

  1.   

    uses
      regExpt
    ///////
    procedure Geta(aHtmlStr: string; T: Tstringlist);
    const
      aRE = '(?i)'
        + '(\<a href\=(\"?|\''?|\s?)?\w*\.\w*(\"?|\''?|\s?)?\>)(\w*)(\<\/a\>)?';
    var
      r: TRegExpr;
    begin
      r := TRegExpr.Create; // Create object
      try
        r.Expression := aRE;
        if r.Exec(aHtmlStr) then
        begin
          repeat
            t.Add(r.Match[4]);
          until not r.ExecNext;
        end;
      finally
        r.Free;
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var T: tStringlist;
    begin
      T := tStringlist.create;
      try
        Geta(memo1.Text, t);
        memo2.Lines.Assign(t);
      finally
        t.Free;
      end;
    end;
    //经过测试,能够实现,另外,如果href 后面有get参数的话,必须重新写表达式.
      

  2.   

    //刚才没有看清除题目,楼主还要求提取URL地址,更改如下:
    procedure Geta(aHtmlStr: string; T: Tstringlist);
    const
      aRE = '(?i)'
        + '(\<a href\=(\"?|\''?|\s?)?(\w*\.\w*)?(\"?|\''?|\s?)?\>)(\w*)(\<\/a\>)?';
    var
      r: TRegExpr;
    begin
      r := TRegExpr.Create; // Create object
      try
        r.Expression := aRE;
        if r.Exec(aHtmlStr) then
        begin
          repeat
            t.Add(r.Match[3]+','+r.Match[5]);
          until not r.ExecNext;
        end;
      finally
        r.Free;
      end;
    end;
    //提示:
    //1.本表达式不能提取包含get参数的URL地址,如果楼主要求,请说明
    //2.不能直接复制表达式到其他语言环境中.单引号''缘故.
    //3.regExpt单元必须下载才能在delphi下使用正则表达式的,delphi不支持正则表达式
    //4.楼主问题解决了就赶紧揭帖给分.因为你的信誉分不怎么样.
      

  3.   

    测试了一下,好象类似
    <a href="http://www.xxx.com/abc.htm">abc</a>
    <a href="../abc.htm">abc</a>
    都不行了另外get参数也需要的
      

  4.   

    你自己把这个修改一下就行了
    aRE = '(?i)'
        + '(\<a href\=(\"?|\''?|\s?)?((\w*\:*\/\/)?(\w*\.*\w*\/*)*)?(\"?|\''?|\s?)?\>)(\w*)(\<\/a\>)?';