在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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值