忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 4981 | 回复: 7

关于正则引擎的问题 - 与语言无关 [复制链接]

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2017-09-30 11:14 |显示全部楼层
在编辑器中无意发现 Onigmn 引擎, Boost.regex 引擎。(EmEditor: 关于正则表达式搜索)
问题有三:
1.> 这两个引擎进行比较的话,在正则语法的使用上有什么出入。
2.> 支持的特性方面 哪个更具有优势。
3.> 与 perl 正则比较的话,有区别吗 (语法),有优势吗。
因为水平有限,没有找到关于这两个正则引擎相关的特性说明。哪位大神有了解的话,请指点一下。谢谢。。。
注:只是想涨涨见识。


求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
发表于 2017-10-02 12:22 |显示全部楼层
这些引擎所支持的正则表达式语法是相同的,只是算法不同,导致在不同情况下的效率不同。

Perl 正则表达式的语法已经发展到了一个非常复杂的地步,已经很少有人愿意去跟随 Perl 的脚步,模式匹配更多的是使用 Grammar, 因为更灵活,也更强大。

论坛徽章:
0
发表于 2017-10-05 11:11 |显示全部楼层
wikipedia上有各种正则引擎的比较表,楼主可以google搜regex engine comparison wikipedia这几个词看一下。

论坛徽章:
0
发表于 2017-10-16 12:17 |显示全部楼层
本人撰写的,还未发表的,《反正则真经》中写道:

什么是正则?
正则者,非神器也!
正则表达式是,浓缩的,处理字符串的,公式。浓缩=短,但不容易理解。
正则表达式由正则引擎解析执行。而正则引擎,其实是一堆函数的集合。相当于写好的代码。这些代码,处理你的【特定】问题不一定效率高,所以说用正则不一定比自己写代码快。

正则引擎也是代码,跟你自己写的代码一样,逃不出倾向于占用空间(内存),还是时间(cpu)的圈子。
这涉及到了【1正则解释引擎的效率问题】,【2正则本身是有限制的。内存空间,cpu时间占用上,是有取舍的。】即,第一个是客观算法问题,第二个是正则引擎设计者主观取舍问题。


论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2017-10-16 18:30 |显示全部楼层
回复 2# 104359176
谢谢您的回复。

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2017-10-16 18:31 |显示全部楼层
回复 3# zhouzhen1
谢谢您的帮助,非常受益。

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2017-10-16 18:32 |显示全部楼层
回复 4# 本友会机友会摄友会
谢谢您的帮助,了解了。

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2017-10-16 18:55 |显示全部楼层
本来想将这些内容总结一下,发现以库形式提供的正则引擎在语言或软件引用时 并非完全按照库的功能进行完全的支持。
NOTE:
An application using a library for regular expression support does not necessarily offer the full set of features of the library, e.g.
GNU grep which uses PCRE does not offer lookahead support, though PCRE does
不过即使是这样,也收获不少好东西。
如:
Notepad++ 使用的是 Boost.Regex 引擎 (>= 6.0 ver)
平衡组,逆序环视 (变长子表达式)




其中有个短语 "> 9 indexable captures" 是个什么意思,可索引的捕获组的数量限制?
请大神再次指点一下,谢谢。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP