DELPHI 中的规则表达式

时间:2010-02-27 18:00:36  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:你从以下地址下载最终版本的 "Microsoft(r) Windows(r) Script" :http://msdn.microsoft.com/downloads/default.asp?URL=/downloads/sample.asp? url=/msdn-files/027/001/733/msdncompositedoc.xml下载需要的包. 下载完后运行它来安装.这将安装 Microsoft(r) Windows(r) Script 其中包含了: Visual Basic(r) Script E...
  正文:下载文件 http://www.undu.com/LIBS/REGEXP.ZIP

由于在 "Microsoft(r) Windows(r) Script" 中的实现因此可以在 Delphi 中使用规则表达式. 首先申明本文不是对规则表达式的理论分析而是解释如何在 Delphi 中使用它.

首先我建议你从以下地址下载最终版本的 "Microsoft(r) Windows(r) Script" :

http://msdn.microsoft.com/downloads/default.ASP/ target=_blank class=infotextkey>asp?URL=/downloads/sample.asp? url=/msdn-files/027/001/733/msdncompositedoc.xml

下载需要的包.
下载完后运行它来安装.

这将安装 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.

我们只对规则表达式的实现感兴趣, 它是在文件 "vbscript.dll" 中. 每当你想在一个特定的机器上运行一个使用 "Microsoft(r) Windows(r) Script" 的规则表达式的程序时, 需要复制文件 "vbscript.dll" 到该机器上并用以下命令注册它:

regsvr32 vbscript.dll

注意你从 internet 上下载的自动安装包会自动进行注册.

现在让我们导入类型库到 Delphi 中:

从 delphi 系统菜单中, 选择 "Project" 然后选择 "Import type library": 这将会显示一个包含各种可导入类型库的列表框的对话框.
从列表框中选择 "Microsoft VBScript Regular Expressions" (跟随一个类型库的版本号). 可能会有该名称的多个项在列表框中 (仅版本号不同): 在这种情况下选择最高版本号的版本.
在 2002 年 9 月 23 日,该包可下载的版本是:

"Microsoft VBScript Regular Expressions 5.5 (Version 5.5)"

而当前的版本是

Microsoft(R) Windows(R) Script 5.6

该版本支持以下 "类名"

TRegExp
TMatch
TMatchCollection
TSubMatches

在 "Unit dir name" 编辑框中打入类型库导入的 pascal 单元的单元名字.
去掉 "Generate Component Wrapper" 复选框的复选(我们只对 pascal 源代码感兴趣) 并单击 "Create Unit" 按钮来创建导入单元.

我们假定你使用的是最终版本.

"Microsoft VBScript Regular Expressions 5.5 (Version 5.5)"

将会定义以下 "接口":

IRegExp = interface;
IMatch = interface;
IMatchCollection = interface;
IRegExp2 = interface;
IMatch2 = interface;
IMatchCollection2 = interface;
ISubMatches = interface;

IRegExp 和 IRegExp2 是相同接口的不同的版本 (IRegExp2 是最终版本). 这对于其它接口也一样.

然后是类型库中的 CoClasses 定义. 我们映射各 CoClass 到它的默认接口中:

RegExp = IRegExp2;
Match = IMatch2;
MatchCollection = IMatchCollection2;
SubMatches = ISubMatches;

IRegExp2 是 "主要的" "接口":

1) 属性:
a) property Pattern: WideString read Get_Pattern
write Set_Pattern;
//规则表达式

b) property IgnoreCase: wordBool read Get_IgnoreCase
write Set_IgnoreCase;
//"大小写敏感" 搜索 (TRUE 或 FALSE)

c) property Global: WordBool read Get_Global write Set_Global;
//要对整个输入串进行全局搜索设置它为 TRUE
//如果你想在搜索到第一个匹配结果后就停止搜索设置它为 FALSE

d) property Multiline: WordBool read Get_Multiline
write Set_Multiline;
//如果输入串中包含 ‘n‘ 字符, 它包含一系列的行.
//如果 Multiline = FALSE (默认值) 则规则表达式
//必须对各行进行明确地测试.
//如果 Multiline = TRUE 规则表达式必须测试整个输入的串.

2) 方法:

a) function Execute(const sourceString: WideString): IDispatch;
safecall;
//对于各成功的匹配, 它返回一个包含 match 对象的 Matches 集合对象

b) function Test(const sourceString: WideString): WordBool;
safecall;
//如果规则表达式可以成功地匹配则返回 TRUE
"DELPHI 中的规则表达式"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Language/Delphi/12958.html


关键字:

关于《DELPHI 中的规则表达式》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td