富阳教研  

返回   富阳教研 > 电脑技术 > 程序设计

程序设计: 原代码共享, Debugging/re Java,PHP,ASP,C++,VB,asm...

回复
 
主题工具 对主题评分 显示模式
旧的 2008-08-13, 05:00 PM   第 1 楼
valley
程序设计 版主
 
帖子: 1,580
声望: 10 valley
来自: 狱中
注册日期: Mar 2003
在Delphi程序中使用微软的正则表达式

在Delphi程序中使用正则表达式
TRegexp的正则表达式的格式说明文档

. 代表所有字符,换行符号(newline)除外
* 0或多次 *号会尽可能多匹配
+ 1或多次 +号会尽可能的多匹配
? 0或1个,即使前面有+号或*号,也只能为2个(即1+1=2个)
^ 否定符,如 [^2]+ 匹配不能含有2的任意字符串
^ 匹配开头 ^D,匹配以D开头的字符串
$ 匹配结尾 $S,匹配以S结尾的字符串
| 相当于or About cats and dogs cat|dog|mouse|fish 匹配cat(第一个,如果第一不存在,匹配第二个
[] 取其中一个(1次)
() 匹配操作模块 取值用\1 \2等表示 Set(Value)? 匹配 Set或者SetValue. (?:Value)前面用?:则不提取匹配的值,如果不需要取值就这样用,效率会高
{min,max} 重复的次数 {min,}不少于min个到无穷个,{num}精确到Num个
\d 匹配所有阿拉伯数字
\b 匹配仅仅是文字的字符串,2个字节宽的文字,如中文,日文等
\B 和\b刚好想反,只匹配1字节宽的如字母,数字,不匹配符号
\w 匹配word character,也会匹配阿拉伯数字(匹配1次)sd35fg3 \b3\b 匹配的是d35
\p{L} 匹配Unicode的字符
范围查询
q(?=u) 匹配question,不匹配Iraq,http://www.regular-expressions.info/quickstart.html
q(?!u) 不匹配question,匹配Iraq,http://www.regular-expressions.info/quickstart.html
(?<=a)b 匹配abc
(?<!a)b 不匹配abc




======================================



{
使用微软RegExp
1. 下载并安装最新版的"Microsoft(r) Windows(r) Script"
2. RegExp包含在vbscript.dll中所以我们必须先注册regsvr32 vbscript.dll
注(安装了Ie5后默认已经包含该控件)

3.在Delphi中引入"Microsoft VBScript Regular Expressions"
主菜单->Project->Import type library->在列表中选择"Microsoft VBScript Regular Expressions"

生成TRegExp控件

4.使用以下代码调用TRegExp控件
}
procedure TForm1.Button1Click(Sender: TObject);
var
matchCollection: IMatchCollection;
Matchs: Match;
submatch: ISubMatches;
i, j: integer;
begin
RegExp1.Global := true;
RegExp1.Pattern := '\w+\.\w+(?!.)';
RegExp1.IgnoreCase := true;
matchCollection := RegExp1.Execute(edit1.Text) as IMatchCollection;

for i := 0 to matchCollection.Count - 1 do
begin
Matchs := matchCollection.Item[i] as Match;
submatch := Matchs.SubMatches as ISubMatches;
memo1.Lines.Add(Matchs.Value);
for j:=0 to submatch.Count -1 do
memo1.Lines.Add(submatch.Item[j])
end;
end;


http://blog.chinaunix.net/u/12056/showart_340342.html
__________________
valley@FCF
欢迎来听歌:http://valley.ydfzx.com
valley不在线   引用回复
旧的 2008-08-13, 05:36 PM   第 2 楼
valley
程序设计 版主
 
帖子: 1,580
声望: 10 valley
来自: 狱中
注册日期: Mar 2003
注意 Microsoft VBScript Regular Expressions有1.0和5.52个版本,按需编译,编译好后在active面板里就能看到它们。
__________________
valley@FCF
欢迎来听歌:http://valley.ydfzx.com
valley不在线   引用回复
旧的 2008-08-14, 11:35 AM   第 3 楼
valley
程序设计 版主
 
帖子: 1,580
声望: 10 valley
来自: 狱中
注册日期: Mar 2003
在子线程中使用OLE、Active控件,需要在Uses单元种引用Active,并进行在子线程中初始化。

coInitialize(0); //初始化
...........
使用active控件
..........
coUnInitialize();
__________________
valley@FCF
欢迎来听歌:http://valley.ydfzx.com
valley不在线   引用回复
旧的 2008-08-14, 11:35 AM   第 4 楼
valley
程序设计 版主
 
帖子: 1,580
声望: 10 valley
来自: 狱中
注册日期: Mar 2003
在主线程中使用也需要初始化
initialization
OleInitialize(nil);
finalization
try
OleUninitialize;
except

end;
__________________
valley@FCF
欢迎来听歌:http://valley.ydfzx.com
valley不在线   引用回复
回复

主题工具
显示模式 评价此主题
评价此主题:

论坛规则  发贴规则
不可以发表主师
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子
论坛开启 vB 代码
[IMG]代码 关闭
HTML代码 关闭


所有时间均为GMT北京时间. 现在时间是 04:23 PM

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
富阳教研网 版权所有