如何在Delphi中使用正则表达式

正则表达式最早是由数学家Stephen Kleene于1956年提出,他是在对自然语言的递增研究成果的基础上提出来的。具有完整语法的正则表达式使用  在字符的格式匹配方面上,后来被应用到熔融信息技术领域。
    正则表达式并非一门专用语言,但它可用于在一个文件或字符里查找和替代文本的一种标准。许多程序中都使用了正则表达式,但是作为我常用的编程工具之一的Delphi却没有直接提供对正则表达式的支持。郁闷之下,在网上进行了一番搜索研究之后,找到了以下几种在Delphi中使用正则表达式的方法。 
    为了清楚的说明问题,我们以下面的例子来描述:
    已知网址:http://www.xcolor.cn/page1.htm
    求:链接中的文件名
    正确答案为:page1.htm 
方法一 使用微软ScriptControl控件
1. 编写一个脚本文件(test.vbs),里面包含要使用的正则表达式函数 
function GetUrlFile(Url)
    Set RegObject = New RegExp 
    With RegObject
    .Pattern = "\w+\.\w+(?!.)"
    .IgnoreCase = True
    .Global = True
    End With
    Set matchs =  RegObject.Execute(Url)
    If matchs.Count > 0 Then
        For Each mach in matchs
            GetUrlFile=mach.value
        Next
    End If
    Set RegObject = nothing
end function 
2. 下载最新版的"Microsoft(r) Windows(r) Script" 
你可以在以下地址找到下载 http://computer.lqinfo.net.cn/down/soft.asp?id=302
3 . 安装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.将被安装到你的系统中
4 .在Delphi中导入MsScript.ocx ,生成TScriptControl控件
5.使用以下代码调用TScriptControl
procedure TForm1.Button2Click(Sender: TObject);
var
a: OleVariant;
begin
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));
end; 
function TForm1.CallFunction(const FunctionName: string;
const Params: oleVariant): OleVariant;
var
Sarray: PSafeArray;
begin
try
// 转化为安全数组
Sarray := PSafeArray(TVarData(Params).VArray);
// 调用函数
Result := ScriptControl1.Run(FunctionName, Sarray);
except
on E: Exception do
begin
end;
end;
end; 
方法二 使用微软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
machs: IMatchCollection;
Matchs: Match;
submatch: ISubMatches;
i, j: integer;
begin
RegExp1.Global := true;
RegExp1.Pattern := ’\w+\.\w+(?!.)’;
RegExp1.IgnoreCase := true;
machs := RegExp1.Execute(’http://www.xcolor.cn/dd/page1.htm’) as
IMatchCollection;
for i := 0 to machs.Count - 1 do
begin
Matchs := machs.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;

方法三 PerlRegEx  详细见:http://www.wesoho.com/article.asp?id=2382

在 Delphi 中使用正则表达式, 目前 PerlRegEx 应该是首选, 准备彻底而细致地研究它.
官方网站: http://www.regular-expressions.info/delphi.html
直接下载: http://www.regular-expressions.info/download/TPerlRegEx.zip
安装方法:
1、先把解压的 TPerlRegEx 文件夹放一个合适的地方, 我放在了 Delphi 的 Imports 目录中.
2、目前最新 For Win32 的版本是对 Delphi 2006 的, 2007 也能用. 
    打开 PerlRegExD2006.dpk, 提示缺少资源文件, 没关系; 
    在 Project Manager 窗口中的 PerlRegExD2006.bpl 上点击右键, 执行 Install;
    这时在 Tool Palette 的列表中已经有了 TPerlRegEx, 在 JGsoft 组.
3、Tools -> Options -> Environment Options -> Delphi Options -> Library-Win32 -> Library path -> 
    添加路径: ...\Imports\TPerlRegEx
4、可以使用了! 直接 uses PerlRegEx 或从 Tool Palette 添加都可以.
    如果不喜欢 Tool Palette 的添加方式可以省略第二步.
计划的学习步骤: 1、正则语法; 2、TPerlRegEx 功能.

方法四 TRegExp 正则表达式类

转载于:https://www.cnblogs.com/railgunman/archive/2010/12/08/1900709.html

Delphi正则表达式库RegularExpr的实战运用 正则表达式(Regular Expression)是一种用于文本模式匹配和处理的工具,它提供了一种在字符串中高效查找、匹配和替换特定模式的方法。在编程和数据处理领域,正则表达式的重要性不言而喻,它广泛应用于搜索引擎、文本编辑器、开发调试等各个场景。正则表达式由一系列字符组成,这些字符定义了一个搜索模式。一些字符具有特殊意义,例如点号()可以匹配任何单个字符,星号()表示匹配前一个字符零次或多次。通过组合使用这些特殊字符,开发者可以构建复杂的匹配模式。 阅读详情

相关推荐

Delphi 10.4 最新版正则表达式(TRegExpr)源码

Delphi平台下非常好用的正则表达式控件源码。TRegExpr库实现正则表达式。 正则表达式易于使用,功能强大,可用于复杂的搜索和替换以及基于模板的文本检查。这对于输入形式的用户输入验证特别有用-验证电子邮件地址等。您还可以从网页或文档中提取电话号码,邮政编码等,在日志文件中搜索复杂的模式,然后您就可以想象得到。无需重新编译程序即可更改规则(模板)。TRegExpr以纯Pascal实现。它包含在 Lazarus(免费Pascal)项目中。但是它也作为单独的库存在,并且可以由Delphi 2-10.4,Borland C ++ Builder 3-10.4进行编译。

Delphi 正则表达式(一)

引用单元: uses RegularExpressions; 正则表达式符号 字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“n”匹配字符“n”。“\n”匹配一个换行符。串行“\\”匹配“\”而“\(”则匹配“(”。 ^ 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,...

老狼的专栏 2544

delphi2010 正则表达式实例

使用TPerlRegEx的一个例子

关于在DELPHI6中使用正则表达式的一些心得

一. 工具选择DELPHI6本身没有处理正则表达式的库,只能找第三方库。在选择方面,我的标准是:1. 不必向开发环境注册控件2. 接口简单3. 符合主流的perl式正则语法4. 专业,至少应该有个看上去专业的专门网站5. 免费目前符合以上标准, 比较好的RegEx类库有TRegExpr ( http://www.regexpstudio.com/ )与PerlRegEx ( http:

johnnyjian的专栏 1851

Delphi2010正则表达式插件

Delphi2010正则表达式插件,强大的组件,对正则表达式支持得非常的好!

Delphi字符串正则表达式

Delphi字 符 串 正 则 表 达 式 的 一 段 示 例 代 码

Delphi 正则表达式

在Delphi中使用正则表达式,我以前用的是PaxScripter里面的——TRegExpr, 引用单元:RegExpr1。但有很多人使用的是RegExpr 是http://RegExpStudio.com 提供的,现在好像免费了,而且包含在Lazarus里面。 Freepascal本身还提供了Regex单元和TRegexEngine类用以解析正则表达式。 Delphi自2009版开始提供了...

weixin_30328063的博客 390

MSScriptControl.ScriptControl组件的用法实例

主要介绍了MSScriptControl.ScriptControl组件的用法实例,需要的朋友可以参考下

关于在DELPHI中使用正则表达式的一些心得

一. 工具选择 DELPHI本身没有处理正则表达式的库,只能找第三方库。在选择方面,我的标准是: 1. 不必向开发环境注册控件 2. 接口简单 3. 符合主流的perl式正则语法 4. 专业,至少应该有个看上去专业的专门网站 5. 免费 目前符合以上标准, 比较好的RegEx类库有TRegExpr ( http://www.regexpstudio...

dibodang1423的博客 210

OpenTCS打造移动机器人交通管制系统(四)

先分析下OpenTCS的一些策略方面的东西,这是OpenTCS的基础。 首先需要先明确下OpenTCS内核中的三个概念: 路由(Route) : 决定了车辆通过什么样的方式和算法来获得一段路径,未来车辆将沿着此路径运行。 派遣(Dispacher): 决定了一个订单应该关联哪一辆小车,即为订单分配车辆和为车辆分配订单。 调度(schedule):狭义上的调度,交通管制的核心,决定了何时分配...

白色冰激凌的技术专栏 5271

pytorchDataLoader中调整数据长度不一致问题(lstm等)

数据长度不一致 用pytorch做rnn的时候,如果输入数据不一样长,可以用两种方式解决。 一种是自定义collate方法, #自定义collate_fn dataloader.DataLoader(dataset,4,True,collate_fn=my_collate) 然后里面写数据和标签载入方式即可 def my_collate(batch): data = [item[0] for item in batch] target = [item[1] for item in batc

weixin_48174100的博客 7770

在DELPHI中使用正则表达式

在网上发现,有多种方法可在delphi中使用正则表达式。窃以为直接使用微软的RegExp对象会比较简单,无需额外工作。    使用微软RegExp方法: 1. 下载并安装最新版的"Microsoft(r) Windows(r) Script" (vbscript.dll)2. 注册vbscript.dll (regsvr32 命令,若安装过VB或IE5以上会默认安装该DLL)3. 在Delphi中

CODER 沙漠孤狐 1087

「API取数」FDL获取金蝶云星空的单据数据

本文介绍了如何使用FDL实现金蝶云API取数以及如何有效应对复杂的API数据处理场景。

oOBubbleX的博客 2027

自己对Delphi中使用正则表达式的研究心得

在 Delphi 中使用正则表达式, 目前 PerlRegEx 应该是首选, 在此分享一下自己的一些心得体会. 官方网站: http://www.regular-expressions.info/delphi.html 直接下载: http://www.regular-expressions.info/download/TPerlRegEx.zip 以Delphi7汉化版为例说一下...

249

从‘包饺子’到‘包络线’:一个生活化比喻讲透长期与短期成本决策

本文通过饺子馆经营的生活化比喻,深入浅出地解析了长期与短期成本决策的核心逻辑。从调整人力(可变成本)到扩建厨房(固定成本),揭示了包络线理论在商业决策中的实际应用,帮助企业主在规模经济与成本控制间找到平衡点。

weixin_32006655的博客 338

用 OData V2 元数据驱动表格体验:SAP UI5 Smart Table 全面解析

摘要: Smart Table是SAPUI5中基于OData元数据自动生成表格的控件,支持个性化、排序、过滤等高级功能。文章从九个维度深入解析其工作机制:1)通过元数据和注解自动生成列;2)支持多种表格类型;3)关键属性的静态化特性;4)与其他智能控件的协同;5)导航属性和导出的处理;6)响应式设计;7)个性化配置;8)性能优化策略;9)端到端实现案例。Smart Table通过读取OData元数据自动完成表格渲染,大幅减少开发工作量,特别适合企业级应用开发场景。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 321
上一篇: 使用ado,多线程访问access数据库的开发
下一篇: cxgrid 如何动态创建列?
aowo7144
博客等级 码龄10年 5粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值