如何在Delphi中使用正则表达式

2016-02-19 12:48 60 1 收藏

有一种朋友不在生活里,却在生命力;有一种陪伴不在身边,却在心间。图老师即在大家的生活中又在身边。这么贴心的服务你感受到了吗?话不多说下面就和大家分享如何在Delphi中使用正则表达式吧。

【 tulaoshi.com - 编程语言 】

   正则表达式最早是由数学家Stephen Kleene于1956年提出,他是在对自然语言的递增研究成果的基础上提出来的。具有完整语法的正则表达式使用  在字符的格式匹配方面上,后来被应用到熔融信息技术领域。
      正则表达式并非一门专用语言,但它可用于在一个文件或字符里查找和替代文本的一种标准。许多程序中都使用了正则表达式,但是作为我常用的编程工具之一的Delphi却没有直接提供对正则表达式的支持。郁闷之下,在网上进行了一番搜索研究之后,找到了以下几种在Delphi中使用正则表达式的方法。
      为了清楚的说明问题,我们以下面的例子来描述:
      已知网址:http://www.xcolor.cn/page1.htm
  
    求:链接中的文件名
  
    正确答案为:page1.htm

方法一 使用微软ScriptControl控件1. 编写一个脚本文件(test.vbs),里面包含要使用的正则表达式函数 function GetUrlFile(Url)
  
    Set RegObject = New RegExp     With RegObject
  
    .Pattern = "w+.w+(?!.)"
  
    .IgnoreCase = True
  
    .Global = True
  
    End With    Set matchs =  RegObject.Execute(Url)    If matchs.Count 0 Then
  
        For Each mach in matchs            GetUrlFile=mach.value
  
        Next
  
    End If    Set RegObject = nothing
  end function
2. 下载最新版的"Microsoft(r) Windows(r) Script" 你可以在以下地址找到下载
  3 . 安装Microsoft(r) Windows(r) ScriptVisual Basic(r) Script Edition (VBScript.) Version 5.6,
  JScript(r) Version 5.6, Windows Script Components,
  Windows Script Host 5.6,
  Windows Script Runtime Version 5.6.将被安装到你的系统中
4 .在Delphi中导入MsScript.ocx ,生成TScriptControl控件
5.使用以下代码调用TScriptControl
procedure TForm1.Button2Click(Sender: TObject);
  var
  a: OleVariant;
  begin
  
memo2.Lines.LoadFromFile('test.vbs');ScriptControl1.Language := 'Vbscript';
  ScriptControl1.AddCode(string(memo2.Text));
  a := VarArrayCreate([0, 0], varVariant);
  a[0] := 'http://www.xolor.cn/page1.htm';
  memo1.Lines.Add(CallFunction('GetUrlFile', a));

  end; function TForm1.CallFunction(const FunctionName: string;
  const Params: oleVariant): OleVariant;
  var
  Sarray: PSafeArray;
  begin

  try
  // 转化为安全数组
  Sarray := PSafeArray(TVarData(Params).VArray);
  // 调用函数
  Result := ScriptControl1.Run(FunctionName, Sarray);
  except
  on E: Exception do
  begin
  end;
  end;
end;
 方法二 使用微软RegExp1. 下载并安装最新版的"Microsoft(r) Windows(r) Script"2. RegExp包含在vbscript.dll中所以我们必须先注册regsvr32 vbscript.dll 注(安装了Ie5后默认已经包含该控件)3.在Delphi中引入"Microsoft VBScript Regular Expressions" 主菜单-Project-Import type library-在列表中选择"Microsoft VBScript Regular Expressions"生成TRegExp控件4.使用以下代码调用TRegExp控件
procedure TForm1.Button1Click(Sender: TObject);
  var
  
machs: IMatchCollection;
  Matchs: Match;
  submatch: ISubMatches;
  i, j: integer;
  begin
  RegExp1.Global := true;
  RegExp1.Pattern := 'w+.w+(?!.)';
  RegExp1.IgnoreCase := true;
  machs := RegExp1.Execute('http://www.xcolor.cn/dd/page1.htm') as
  IMatchCollection;
  for i := 0 to machs.Count - 1 do
  begin
  Matchs := machs.Item[i] as Match;
  submatch := Matchs.SubMatches as ISubMatches;
  memo1.Lines.Add(matchs.Value);
  //for j:=0 to submatch.Count -1 do
  // memo1.Lines.Add(submatch.Item[j])
  end;

  end;

来源:http://www.tulaoshi.com/n/20160219/1602028.html

延伸阅读
标签: Web开发
代码如下: % ' -------------------------------------------------------------- ' Match 对象 ' 匹配搜索的结果是存放在 Match 对象中,提供了对正则表达式匹配的只读属性的访问。 ' Match 对象只能通过 RegExp 对象的 Execute 方法来创建,该方法实际上返回了 Match 对象的集合。 ' 所有的 Match 对象属性都是只读的。在执行正则表...
标签: Web开发
正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为元字符)。模式描述在搜索文本时要匹配的一个或多个字符串。   正则表达式示例 表达式 匹配 /^\s*$/ 匹配空行。 /\d{2}-\d{5}/ 验证由两位数字、一个连字符再加 5 位数字组成的 ID 号。 /\s*(\S+)(\s[^]*)?[\s\S]*\s*\/\1\s*/ ...
标签: Web开发
正则表达式在PHP中被用来处理复杂的文字串。支持正则表达式的函数有: ereg()ereg replace()eregi replace()split() 这些函数都将正则表达式作为他们的第一个参数。PHP使用POSIX扩展规则表达式(使用POSIX 1003.2)。要找到所有的关于POSIX扩展规则表达式的描述,请查看包括在PHP发行版本之内的regex man页面。 Examp...
正则表达式简介 翻译:NorthTibet 原文出处:Regular Expressions 有些新手对正则表达式不是很熟悉,有必要在此作一简单回顾。如果你是正则表达式高手,可以不用看这一部分。 正则表达式是描述字符串集的字符串。例如,正则表达式“Mic*”描述所有包含“Mic”,后跟零个或多个字符的字符串。Mickey、Microsoft、Michelangelo...
标签: Web开发
如果我们问那些UNIX系统的爱好者他们最喜欢什么,答案除了稳定的系统和可以远程启动之外,十有八九的人会提到正则表达式;如果我们再问他们最头痛的是什么,可能除了复杂的进程控制和安装过程之外,还会是正则表达式。那么正则表达式到底是什么?如何才能真正的掌握正则表达式并正确的加以灵活运用?本文将就此展开介绍,希望能够对那些渴...

经验教程

368

收藏

68
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部