| 正则表达式最早是由数学家 Стивен Клин 于 1956 年提出 他是在对自然语言的递增研究成果的基础上提出来的。具有完整语法的正则表达式使用 他是在对自然语言的递增研究成果的基础上提出来的。具有完整语法的正则表达式使用 在字符的格式匹配方面上 , 后来被应用到熔融信息技术领域。 正则表达式并非一门专用语言 , 但它可用于在一个文件或字符里查找和替代文本的一种标准。许多程序中都使用了正则表达式, 但是作为我常用的编程工具之一的 delphi 却没有直接提供对正则表达式的支持。郁闷之下 , 在网上进行了一番搜索研究之后 找到了以下几种在 delphi 中使用正则表达式的方法。 为了清楚的说明问题 , : : 已知网址: http://www.xcolor.cn/page1.htm 求 :链接中的文件名 正确答案为 : Page1.htm 方法一 使用微软 ScriptControl 控件1. 编写一个脚本文件 (тест.vbs) , 里面包含要使用的正则表达式函数 |
| функция geturlfile (url) SET Recobject = New Regexp с Recobject .Pattern = "/w+/./W+(?!.)" .IgnoreCase = true .Global = true End с set matchs = regobject.execute (url), если совпадает. Для каждого Маха в матчах geturlfile = mach.value Следующий Конец, если установить Regobject = ничего конечная функция |
|
2. 下载最新版的 "Microsoft (R) Windows (R) скрипт" 你可以在以下地址找到下载 |
3 安装 Microsoft (R) Windows (R) ScriptVisual Basic (R) Script Edition (VBScript.) Версия 5.6, JScript (R) версия 5.6, компоненты скрипта Windows, Хост скрипта Windows 5.6, Скрипт сценария Windows версии 5.6. 将被安装到你的系统中
|
4. 在 delphi 中导入 msscript.ocx, 生成 tscriptControl 控件 |
5. 使用以下代码调用 tscriptControl |
Процедура tform1.button2click (отправитель: tobject); вар A: Olevariant; начинать 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)); конец; функция tform1.callfunction (const functionName: string; Const Params: Olevariant): Olevariant; вар Sarray: Psafearray; начинать пытаться // 转化为安全数组 Sarray: = psafearray (tvardata (params) .varray); // 调用函数 Результат: = scriptControl1.run (functionName, sarray); кроме на E: Исключение Do начинать конец; конец; конец; | |
| 方法二 使用微软 regexp |
1. 下载并安装最新版的 "Microsoft (R) Windows (R) Скрипт" |
2. regexp 包含在 vbscript.dll 中所以我们必须先注册 regsvr32 vbscript.dll 注 (安装了 IE5 后默认已经包含该控件) |
3. 在 Delphi 中引入 "Microsoft VBScript Регулярные выражения" 主菜单-> Project-> Import Type Library-> 在列表中选择 "Microsoft VBScript Регулярные выражения" 生成 Tregexp 控件 |
4. 使用以下代码调用 Tregexp 控件 |
Процедура tform1.button1click (отправитель: tobject); вар Маха: Иматчколлирование; Матчи: матч; Подборка: isubmatches; я, J: целое число; начинать Regexp1.global: = true; Regexp1.pattern: = '/w+/./W+(?!.)'; Regexp1.ignorecase: = true; machs: = regexp1.execute ('http://www.xcolor.cn/dd/page1.htm') как Imatchcollection; для i: = 0 to machs.count - 1 do начинать Матчи: = machs.item [i] как совпадение; Submatch: = matchs.submatches как isubmatches; memo1.lines.add (matchs.value); // для j: = 0 для подчинения.count -1 do // memo1.lines.add (sumatch.item [j]) конец; конец; |
|