"/<a.+href\s*=\s*[\'\"]?([^\s<\'\"]*)[\'\"]?.*>([^<\/a>].*)<\/a>/i"
我有了一个perl正则表达式,朋友帮忙写的,但是在delphi中,如何使用这个表达式呢?我用的regexpr这个库,希望能给讲解一下。

解决方案 »

  1.   

    dephi里不可能正则的,不过网上有一个库,没有试过
      

  2.   

    其实可以把网页用TWebBrowser下载,再取得链接的,网上有资料,找找
      

  3.   

    须要引入库
    //Type Lib: C:\WINDOWS\system32\vbscript.dll\2 (1)var re:TRegExp;
    begin
      Re := TRegExp.Create(self);
      Re.Global := true;
      Re.IgnoreCase := true;  re.Pattern:+'/<a.+href\s*=\s*[\''\"]?([^\s<\''\"]*)[\''\"]?.*>([^<\/a>].*)<\/a>/i';
    .................略
    //以下为本人曾经使用的
         //自动识别网址
      FrmMain.Re.Pattern := '^((http):(\/\/|\\\\)[A-Za-z0-9\./=\?%\-&_~`@[\]\'':+!]+)';
      self.Url := FrmMain.Re.Replace(self.Url, '<SkyGzLink>$1</SkyGzLink>');
      FrmMain.Re.Pattern := '((http):(\/\/ |\\\\)[A-Za-z0-9\./=\?%\-&_~`@[\]\'':+!]+)$';
      self.Url := FrmMain.Re.Replace(self.Url, '<SkyGzLink>$1</SkyGzLink>');
      FrmMain.Re.Pattern := '([^>= ""])((http):(\/\/|\\\\)[A-Za-z0-9\./=\?%\-&_~`@[\]\'':+!]+)';
      self.Url := FrmMain.Re.Replace(self.Url, '<SkyGzLink>$2</SkyGzLink>');
      //自动识别www等开头的网址
      FrmMain.Re.Pattern := '([^(http://|http:\\)])((www|cn)[.](\w)+[.]{1,}(net|com|cn|org|cc)(((\/[\~]*|\\[\~]*)(\w)+)|[.](\w)+)*(((([?](\w)+){1}[=]*))*((\w)+){1}([\&](\w)+[\=](\w)+)*)*)';
      self.Url := FrmMain.Re.Replace(self.Url, '<SkyGzLink>http://$2</SkyGzLink>');  //自动识别Email地址
        FrmMain.Re.Pattern := '([^(=)])((\w)+[@]{1}((\w)+[.]){1,3}(\w)+)';
        self.Url := FrmMain.Re.Replace(self.Url, '<SkyGzLink>mailto:$2</SkyGzLink>');
    re.free;
    end;