国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Delphi > 正文

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

2019-11-18 18:18:39
字體:
來源:轉載
供稿:網友
   正则表达式最早是由数学家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;

end;

上一篇:delphi中的XML解析控件TXMLDocument的用法

下一篇:先人的DELPHI基礎開發技巧

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 岐山县| 吉首市| 黔江区| 常德市| 秀山| 辽中县| 怀仁县| 彭山县| 台南县| 巴东县| 中西区| 元氏县| 山阴县| 玉屏| 九龙城区| 深水埗区| 金沙县| 运城市| 郁南县| 平昌县| 扶沟县| 凤城市| 海丰县| 吉林省| 钟祥市| 遂昌县| 武胜县| 改则县| 棋牌| 托克逊县| 保定市| 新源县| 湄潭县| 皮山县| 宜川县| 确山县| 岳阳市| 西充县| 红原县| 黑河市| 伊宁市|