在Delphi7中使用RegExpr类(正则表达式类)

 在 Delphi 中是没有自带的正则表达式库的,在网上能找到的用于 Delphi 的正则表达式类大体上有两个,分别是 PerlRegEx 和 RegExpr。前者相当强大,但发布程序时需要带上他的一个 DLL 文件,感觉很麻烦。而后者是完全使用 Delphi 来实现,虽然功能稍微逊色,但是发布和使用较为方便,直接使用源文件,而发布时也无须增加任何文件。
    那么我们就来说说后者,顺便学习一下。

    源文件与示例下载:http://regexpstudio.com/TRegExpr/TRegExpr.html

    附加工具RegExpStudio下载:http://regexpstudio.com/RegExpStudio.html

    正则表达式语法:http://regexpstudio.com/TRegExpr/Help/RegExp_Syntax.html

    要使用他只需要添加RegExpr.pas到你的project(Delphi主菜单 Project -> Add to project..),然后在要使用正则的单元里申明就行了,如:

implementation
uses
RegExpr;
{$R *.DFM}

    注意,最好添加在 implementation 之后,而不是 interface 之后。interface 后面使用的是系统自带的,而 implementation 后是自定义的。详细解说请看这里。

    一个简单的示例,提取所有的邮箱的函数,调用此函数会返回文本里所有的邮箱:

function ExtractEmails(const AInputString: string): string;
const
EmailRE = '[_a-zA-Z\d\-\.]+@[_a-zA-Z\d\-]+(\.[_a-zA-Z\d\-]+)+';
var
r: TRegExpr;
begin
Result := '';
r := TRegExpr.Create;
try
   r.Expression := EmailRE;
   if r.Exec(AInputString) then
   repeat
    Result := Result + r.Match[0] + ',';
   until not r.ExecNext;
finally
r.Free;
end;
end;

    下面是我从 Help 文件里翻译出的一些主要接口的说明:(注:有英语大虾吗?希望那位英语大虾能全部都翻译出来。)

class function VersionMajor : integer;
返回主版本号。
class function VersionMinor : integer;
返回副版本号。

比如我下载的版本是 v0.944,那么 VersionMajor = 0、VersionMinor = 944,是无多大实际意义的方法啊。

function Exec (const AInputString : string) : boolean;
返回字符串 AInputString 是否匹配。

function ExecNext : boolean;
查找是否还有下一个匹配项。

property MatchPos [Idx : integer] : integer;
返回指定的匹配字符串的起始位置。

property MatchLen [Idx : integer] : integer;
返回指定的匹配字符串的长度。

property Match [Idx : integer] : string;
返回指定的匹配字符串。

function ReplaceRegExpr (const ARegExpr, AInputStr, AReplaceStr : string; AUseSubstitution : boolean = False) : string;
将匹配的所有字符串替换成 AReplaceStr 并返回。

另外 \n 表示回车,\s 表示空格,^ 表示取反,- 表示连接(如a-z,表示24个小写的英文字母),| 表示或,& 表示和。

    还有很多方法,大家可以去参考示例文件和 Help 文件。

来自:http://apps.hi.baidu.com/share/detail/22353419

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页