Delphi 正则表达式起步


======================================================
注:本文源代码点此下载
======================================================

#53楼 2009-03-20 14:28 steamx

请问一下为什么我用d7安装的时候没问题,tool palette 的列表中也已经有了 tperlregex, 在 jgsoft 组.

另外在环境变量中也设置了library path ,可是关掉d7之后,重新打开时,却报错误: 【没有找到 pcre3.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题】

回复 引用 查看

#54楼[楼主] 2009-03-20 14:36 万一

@steamx

你看看 #51 楼的办法行吗(我还没试过), 最好别用那个 dll, 不然分发时有麻烦.

回复 引用 查看

#55楼 2009-03-20 14:42 steamx

谢谢你的回复,不过我按51楼的方式去找那个pas文件,没有他说的【'?: 】.

回复 引用 查看

#56楼 2009-03-31 00:18 g00x[未注册用户]

按照万老师的方法装了一下,文件夹有 perlregexd7.dpk类似的文件,按照文件名,应该d7装perlregexd7.dpk,不过我d7.d2006都尝试装,虽然提示失败,且没找到[这时在 tool palette 的列表中已经有了 tperlregex, 在 jgsoft 组.]

不过还是能用了.

期间,出现提示pcre3.dll找不到,但发现exe还是生成了,把pcre3.dll和exe都一目录,exe能运行,所以只要pcre3.dll放到准确位置就能正常编译,可惜我不知道是哪个目录~

回复 引用

#57楼 2009-03-31 00:21 g00x[未注册用户]

经过测试,发现,放在程序所在目录即可.如我的是在d:\program files\borland\delphi7\projects

回复 引用

#58楼 2009-04-14 15:08 heyd[未注册用户]

请问用tperlregex的时候发现过“stack overflow”,应该怎么解决呢?

问题由来:

正则表达式1:begin([\s\s])*end

正则表达式2:begin[\s\s]*end

在进行匹配时,当匹配字符串较小时,两个表达式都能正确匹配,但是当匹配字符串较大时,比如20000个以上,正则表达式1就不能匹配了,报“stack overflow”错,在pcre3.dll的pcre_exec里面报错,这是怎么回事。仅仅是多了一个括号,

因为可能在正则表达式1的括号内再加上一些限制条件,所以括号应该是必须的。

比如:begin((?!(begin|end))[\s\s])*end

谢谢!

回复 引用

#59楼 2009-04-14 15:59 heyd[未注册用户]

顺便请问,关于delphi的正则表达式控件还有哪些呢?开源的有哪些?哪个功能最强大?谢谢!

回复 引用

#60楼 2009-06-10 18:35 应无物[未注册用户]

我实在无法理解perlregex作者的做法。象他现在搞成每次要带pcre3.dll的样子,我不如直接用微软regexp算了。

主菜单->project->import type library->在列表中选择"microsoft vbscript regular expressions"

这个东西是随ie安装的,基本上装windows的机子上都有。分发软件的时候可以不用携带。

回复 引用

#61楼 2009-07-03 22:38 wuyu[未注册用户]

关于pcre3.dll的问题,在它的官网第二段文字有介绍

there are many pcre-based vcl components available. most are free, some are not. some compile pcre into a dll that you need to ship along with your application, others link the pcre obj files directly into your delphi exe.

也就是说,除了将dll带着走以外,还可以将pcre目录下那些obj文件一起链接进delphi编译出来的exe文件中。

在pcre.pas文件最前面有这么一些语句

// define pcre_staticlink to link the obj files with pcre 7.7.

// due to bugs in the delphi compiler, you may get an internal error if install tperlregex into a design time package,

// and you don’t put tperlregex into a runtime package either.

// you can use pcre_staticlink if you don’t use packages at all (which means you don’t install it into the ide and you don’t drop tperlregex on a form)

// you can also use pcre_staticlink if you put the component into a runtime package

//{$define pcre_staticlink}

// define pcre_linkdll to use pcre3.dll

{$define pcre_linkdll}

嘿嘿,原来解决起来如此简单,把{$define pcre_staticlink}和{$define pcre_linkdll}的注释处理一下就行了。

回复 引用

#62楼 2009-07-16 16:49 放纵思想

明白了:

找到 pcre.pas 文件中的以下两行,改成这样就行了:

{$define pcre_staticlink}

//{$define pcre_linkdll}

回复 引用 查看

#63楼 2009-07-17 14:06 yoyo & cici

您好,最近正在研究正则表达式,想在delphi中使用pcre,使用的是tperlregex组件。但是发现只能让程序带一个pcre3.dll发布,而不能像文档中描述的,通过在pcre.pas中指定{$define pcre_staticlink}编译条件来使用obj文件直接编译到exe中。颇费周折,不得其法,特此请教。另外,如果正在编译的工程是一个package,使用这种静态链接就没有问题,不知道到底是什么原因。

回复 引用 查看

#64楼 2009-07-18 18:53 放纵思想

引用放纵思想:

明白了:

找到 pcre.pas 文件中的以下两行,改成这样就行了:

{$define pcre_staticlink}

//{$define pcre_linkdll}

在家里电脑怎么又不行了,提示:

[fatal error] internal error: l3169

怎么回事?

回复 引用 查看

#65楼 2009-07-23 12:51 yoyo & cici

我这里哪台机器都不行,只有在把这个单元编译到bpl中时才可以。

回复 引用 查看

#66楼 2011-01-05 13:36 lynn_gu

环境弄好了~开始学习喽~

回复 引用 查看

#67楼 2011-12-13 15:07 不懂-d

在 delphi xe 中复制好文件,设置好路径就可以用了,不过在 delphi xe 的代码编辑器中却有红色波浪线的错误提示,但是编译能通过,万一老师有解决办法吗?

还有一个问题,是否学习 delphi 官方的正则表达式就可以了,tperlregex 是否和 delphi 官方的正则表达式是同一个东西?

谢谢,这个问题,我找到答案了“(regularexpressions)尽管有不少东西还没实现,但试用下来感觉还是蛮不错的,可以放弃 perlregex 了!”

谢谢万一老师。

回复 引用 查看

#68楼 2011-12-22 21:14 雪中小屋

好像全局类变量需要赋值nil来释放指针,局部变量用free就够了。

回复 引用 查看

注册用户登录后才能发表评论,请 登录 或 注册,返回博客园首页

首页博问闪存新闻园子招聘知识库

最新it新闻:

·ios 5.1 beta3文件预示未来 siri有可能支持 ipad和 ipod touch

·android平台12月广告浏览份额51.6% 超越ios

·测试版ios源代码显示ipad 3或将支持siri

·斯蒂芬·霍金的新电脑

·京东商城2.95亿竞得北京商业地一块

» 更多新闻...

最新知识库文章:

·javascript 面向对象编程

·持续集成之“everything is code”

·持续集成之“软件自我识别”

·持续集成之戏说check-in dance

·什么是闭包。
       我的理解

» 更多知识库文章...

china-pub 2011秋季教材巡展

china-pub 计算机绝版图书按需印刷服务

copyright ©2012 万一 powered by: 博客园 模板提供:沪江博客


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值