| 正则表达式最早是由数学家 Stephen Kleene 于 1956 年提出 , 他是在对自然语言的递增研究成果的基础上提出来的。具有完整语法的正则表达式使用 在字符的格式匹配方面上 , 后来被应用到熔融信息技术领域。 正则表达式并非一门专用语言 , 但它可用于在一个文件或字符里查找和替代文本的一种标准。许多程序中都使用了正则表达式, 但是作为我常用的编程工具之一的 delphi 却没有直接提供对正则表达式的支持。郁闷之下 , 在网上进行了一番搜索研究之后 , 找到了以下几种在 delphi 中使用正则表达式的方法。 为了清楚的说明问题 , : : 已知网址: http://www.xcolor.cn/page1.htm 求 :链接中的文件名 正确答案为 : Page1.htm 方法一 使用微软 ScriptControl 控件1. 编写一个脚本文件 (test.vbs) , 里面包含要使用的正则表达式函数 |
| function getUrlfile (URL) Atur regobject = regexp baru dengan regobject .Pattern = "/w+/./W+(?!.)" .Ignorecase = true .Global = true Diakhiri dengan set pertandingan = regobject.execute (url) jika matchs.count> 0 lalu Untuk setiap mach dalam pertandingan getUrlfile = value Berikutnya Akhiri jika set RegObject = tidak ada fungsi akhir |
|
2. 下载最新版的 "microsoft (r) windows (r) skrip" 你可以在以下地址找到下载 |
3. 安装 Microsoft (R) Windows (R) ScriptVisual Basic (R) Script Edition (VBScript.) Versi 5.6, JScript (R) Versi 5.6, komponen skrip Windows, Windows Script Host 5.6, Windows Script Runtime Versi 5.6. 将被安装到你的系统中
|
4. 在 delphi 中导入 msscript.ocx, 生成 tscriptControl 控件 |
5. 使用以下代码调用 TScriptControl |
Prosedur TFORM1.BUTTON2CLICK (Pengirim: Tobject); var A: Olevariant; mulai memo2.lines.loadFromFile ('test.vbs'); scriptControl1.banguage: = '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)); akhir; fungsi tform1.callfunction (const functionName: string; Const Params: Olevariant): Olevariant; var Sarray: PsafeArray; mulai mencoba // 转化为安全数组 Sarray: = psafearray (tvardata (params) .varray); // 调用函数 Hasil: = ScriptControl1.run (FunctionName, Sarray); kecuali pada e: pengecualian lakukan mulai akhir; akhir; akhir; | |
| 方法二 使用微软 Regexp |
1. 下载并安装最新版的 "microsoft (r) windows (r) skrip" |
2. Regexp 包含在 vbscript.dll 中所以我们必须先注册 regsvr32 vbscript.dll 注 (安装了 IE5 后默认已经包含该控件) |
3. 在 Delphi 中引入 "Ekspresi Reguler Microsoft VBScript" 主菜单-> Proyek-> Library Jenis Impor-> 在列表中选择 "Ekspresi Reguler Microsoft VBScript" 生成 tregexp 控件 |
4. 使用以下代码调用 tregexp 控件 |
Prosedur TFORM1.BUTTON1CLICK (Pengirim: Tobject); var Machs: iMatchCollection; Pertandingan: cocok; Kirim: IsubMatches; I, J: Integer; mulai Regexp1.global: = true; Regexp1.pattern: = '/w+/./W+(?!.)'; Regexp1.ignorecase: = true; Machs: = regexp1.execute ('http://www.xcolor.cn/dd/page1.htm') sebagai IMatchCollection; untuk i: = 0 ke machs.count - 1 lakukan mulai Kecocokan: = machs.item [i] sebagai kecocokan; kiriman: = matchs.submatches sebagai isubmatches; memo1.lines.add (matchs.value); // untuk j: = 0 untuk submatch.count -1 lakukan // memo1.lines.add (submatch.item [j]) akhir; akhir; |
|