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

乐总香烟

乐总香烟

2016-02-19 12:48

有一种朋友不在生活里,却在生命力;有一种陪伴不在身边,却在心间。图老师即在大家的生活中又在身边。这么贴心的服务你感受到了吗?话不多说下面就和大家分享如何在Delphi中使用正则表达式吧。
   正则表达式最早是由数学家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;
展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
如何在Delphi中使用正则表达式

在Javascript中使用正则表达式

Web开发
在Javascript中使用正则表达式

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

正则表达式中使用变量赋值

Web开发
正则表达式中使用变量赋值

正则表达式

Web开发
正则表达式

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

教你使用正则表达式

C语言教程 C语言函数
教你使用正则表达式

正则表达式口诀 正则表达式学习工具

Web开发
正则表达式口诀 正则表达式学习工具

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

INI文件的读写

INI文件的读写

超级链接a的提示方式和打开方式

超级链接a的提示方式和打开方式
下拉加载更多内容 ↓