| 正则表达式最早是由数学家 Stephen Kleene 于 1956 年提出 , 他是在对自然语言的递增研究成果的基础上提出来的。具有完整语法的正则表达式使用 , 后来被应用到熔融信息技术领域。 正则表达式并非一门专用语言 , 但它可用于在一个文件或字符里查找和替代文本的一种标准。许多程序中都使用了正则表达式 但它可用于在一个文件或字符里查找和替代文本的一种标准。许多程序中都使用了正则表达式 但是作为我常用的编程工具之一的 Delphi 却没有直接提供对正则表达式的支持。郁闷之下 , 在网上进行了一番搜索研究之后 找到了以下几种在 找到了以下几种在 Delphi 中使用正则表达式的方法。 为了清楚的说明问题 我们以下面的例子来描述. 已知网址: http://www.xcolor.cn/page1.htm 求 :链接中的文件名 正确答案为 : Page1.htm 方法一 使用微软 ScriptControl 控件1. 编写一个脚本文件 (test.vbs) , 里面包含要使用的正则表达式函数 |
| función getUrlFile (URL) Establecer regobject = new Regexp con Regobject .Pattern = "/w+/./W+(?!.)" .IngineCase = True .Global = verdadero Finalizar con coincidencias establecidas = regObject.Execute (url) si los partidos.count> 0 entonces Para cada Mach en los partidos getUrlFile = mach.Value Próximo FIN IF SET RegObject = Nothing función final |
|
2. 下载最新版的 "Microsoft (R) Windows (R) Script" 你可以在以下地址找到下载 |
3. 安装 Microsoft (R) Windows (R) Scriptvisual Basic (R) Script Edition (VBScript.) Versión 5.6, JScript (R) Versión 5.6, Componentes de script de Windows, Windows Script Host 5.6, Windows Script Runtime versión 5.6. 将被安装到你的系统中
|
4. 在 Delphi 中导入 msscript.ocx, 生成 tscriptControl 控件 |
5. 使用以下代码调用 tscriptControl |
Procedimiento tForm1.Button2Click (remitente: tobject); varilla A: Olevariant; comenzar 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)); fin; función tForm1.callFunction (const functionName: string; constante parámetros: olevariant): olevariant; varilla Sarray: PSAFEARRAY; comenzar intentar // 转化为安全数组 Sarray: = pSafearray (TVARDATA (params) .varray); // 调用函数 Resultado: = scriptControl1.run (functionName, sarray); excepto En E: Excepción DO comenzar fin; fin; fin; | |
| 方法二 使用微软 regexp |
1. 下载并安装最新版的 "Microsoft (R) Windows (R) Script" |
2. Regexp 包含在 vBscript.dll 中所以我们必须先注册 regsvr32 vbscript.dll 注 (安装了 IE5 后默认已经包含该控件) |
3. 在 Delphi 中引入 "Microsoft VBScript Expresiones regulares" 主菜单-> Proyecto-> Tipo de importación Library-> 在列表中选择 "Microsoft VBScript Expresiones regulares" 生成 TregExp 控件 |
4. 使用以下代码调用 Tregexp 控件 |
procedimiento tForm1.Button1Click (remitente: tobject); varilla Maches: imatchCollection; Partidos: Partido; Submatch: isubmatches; I, J: entero; comenzar Regexp1.global: = true; Regexp1.pattern: = '/w+/./W+(?!.)'; Regexp1.ignorecase: = true; Machs: = regexp1.execute ('http://www.xcolor.cn/dd/page1.htm') como IMatchCollection; para i: = 0 a machs.cuent - 1 do comenzar Coincidencias: = machs.Item [i] como coincidencia; Submatch: = Matchs.submatches como isubmatches; Memo1.lines.add (Matchs.Value); // para j: = 0 a submatch.count -1 hacer // memo1.lines.add (submatch.item [j]) fin; fin; |
|