程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 如何在Delphi中使用正則表達式

如何在Delphi中使用正則表達式

編輯: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) Script Visual 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;
  方法二 使用微軟RegExp
    1. 下載並安裝最新版的"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;
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved