| 正则表达式最早是由数学家 Stephen Kleene 于 1956 年提出 年提出, 他是在对自然语言的递增研究成果的基础上提出来的。具有完整语法的正则表达式使用 在字符的格式匹配方面上 在字符的格式匹配方面上, 后来被应用到熔融信息技术领域。 正则表达式并非一门专用语言, 但它可用于在一个文件或字符里查找和替代文本的一种标准。许多程序中都使用了正则表达式, 但是作为我常用的编程工具之一的 델파이没有直接提供对正则表达式的支持。郁闷之下 没有直接提供对正则表达式的支持。郁闷之下, 在网上进行了一番搜索研究之后 在网上进行了一番搜索研究之后, 找到了以下几种在 델파이 中使用正则表达式的方法。 为了清楚的说明问题 为了清楚的说明问题, 我们以下面的例子来描述 : 已知网址 : http://www.xcolor.cn/page1.htm 求 :链接中的文件名 正确答案为 : Page1.htm script 컨트롤 控件1. 编写一个脚本文件 (test.vbs) + 里面包含要使用的正则表达式函数 |
| 함수 geturlfile (URL) regobject = regobject 를 설정하십시오 .pattern = "/w+/./w+(?!.)" .ignorecase = true .global = true set matchs = regobject.execute (url) matchs.count> 0으로 끝납니다. 일치하는 각 마하의 경우 geturlfile = mach.value 다음 설정하면 regobject = nothing을 설정하십시오 엔드 기능 |
|
2. 下载最新版的 "Microsoft (R) Windows (R) 스크립트"你可以在以下地址找到下载 |
3. Microsoft (R) Windows (R) Scriptvisual Basic (R) Script Edition (VBSCRIP.) 버전 5.6, jscript (R) 버전 5.6, Windows 스크립트 구성 요소, Windows 스크립트 호스트 5.6, Windows 스크립트 런타임 버전 5.6
|
4. 在 delphi 中导入 msscript.ocx, 生成 tscriptControl 控件 |
5. tscriptControl |
절차 tform1.Button2Click (sender : tobject); var 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; var Sarray : Psafearray; 시작하다 노력하다 // 转化为安全数组 sarray : = psafearray (tvardata (params) .varray); // 调用函数 결과 : = ScriptControl1.run (functionName, Sarray); 제외하고 e : 예외적입니다 시작하다 끝; 끝; 끝; | |
| 方法二 方法二 regexp |
1. 下载并安装最新版的 "Microsoft (R) Windows (R) 스크립트" |
2. regexp ge vbscript.dll 中所以我们必须先注册 regsvr32 vbscript.dll 짐 |
3. Delphi 在 "Microsoft vbscript 정규식" 主菜单-> 프로젝트-> 가져 오기 유형 라이브러리-> 在列表中选择 "Microsoft vbscript 정규식"生成 tregexp 控件 |
4. p tregexp 控件 |
절차 tform1.Button1click (sender : tobject); var 마하 : imatchcollection; 매치 : 성냥; 잠수함 : isubmatches; I, 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] 일치; 잠수함 : = matchs.submatches as isubmatches; memo1.lines.add (matchs.value); // j : = 0 to submatch.count -1 do // memo1.lines.add (submatch.item [j]) 끝; 끝; |
|