正则表达式

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
正则引擎主要可以分为两大类:一种是DFA,一种是NFA。主流的正则引擎又分为3类:1. DFA引擎
DFA 引擎在线性时状态下执行,因为它们不要求回溯(并因此它们永远不测试相同的字符两次)。DFA 引擎还可以确保匹配最长的可能的字符串。但是,因为 DFA 引擎只包含有限的状态,所以它不能匹配具有反向引用的模式;并且因为它不构造显示扩展,所以它不可以捕获子表达式。
使用DFA引擎的程序主要有:awk、egrep、flex、lex、MySQL、Procmail等。
2. 传统型NFA
传统的 NFA 引擎运行所谓的“贪婪的”匹配回溯算法,以指定顺序测试正则表达式的所有可能的扩展并接受第一个匹配项。因为传统的 NFA 构造正则表达式的特定扩展以获得成功的匹配,所以它可以捕获子表达式匹配和匹配的反向引用。但是,因为传统的 NFA 回溯,所以它可以访问完全相同的状态多次(如果通过不同的路径到达该状态)。因此,在最坏情况下,它的执行速度可能非常慢。因为传统的 NFA 接受它找到的第一个匹配,所以它还可能会导致其他(可能更长)匹配未被发现。
使用传统型NFA引擎的程序主要有:GNUEmacs,Java,ergp,less,more,.NET语言,PCRE library,Perl,PHP,Python,Ruby,sed,vi等。
3. POSIX NFA。
POSIX NFA 引擎与传统的 NFA 引擎类似,不同的一点在于:在它们可以确保已找到了可能的最长的匹配之前,它们将继续回溯。因此,POSIX NFA 引擎的速度慢于传统的 NFA 引擎;并且在使用 POSIX NFA 时,您恐怕不会愿意在更改回溯搜索的顺序的情况下来支持较短的匹配搜索,而非较长的匹配搜索。
使用POSIX NFA引擎的程序主要有:mawk,MorticeKern Systems’ utilities,GNU Emacs(使用时可以明确指定)。
注:也有使用DFA/NFA混合的引擎:GNUawk,GNU grep/egrep,Tcl。

PCRE库

PCRE (PerlCompatible Regular Expressions) 包括 perl 兼容的正规表达式库.这些在执行正规表达式模式匹配时用与Perl 5同样的语法和语义是很有用的。
官方网址:http://www.pcre.org/         http://www.psyon.org/projects/pcre-win32/index.php(Win32版本)。

RE2库

RE2是一个快速、安全和线程友好的C++正则表达式引擎。它使用DFA(有限状态机)引擎来对模式匹配进行加速。RE2库的语法参考附录1。
开源网址:
http://code.google.com/p/re2/wiki/Syntax(正则表达式语法)。
http://swtch.com/~rsc/regexp/regexp3.html(PCRE和RE2性能)。

REEC库

REEC是一个精简,高效的C语言正则表达式引擎,它使得C语言开发中支持正则表达式,目前已经进化到了1.2.0版本,可以说无论从功能上,还是效率都到达了很好的应用水平,该引擎除支持常用的正则标准之外,还有一些原创的特性,例如正则式的分组、模式敏感等级等等,使得正则表达式更加灵活多变。
开源网址:http://code.google.com/p/reec/

转载于:https://www.cnblogs.com/riasky/p/3363456.html

C/C++中使用的正则表达式库相关推荐

  1. 深入浅出C/C++中的正则表达式库(一)--GNU Regex Library

    正则表达式(Regular Expressions),又被称为regex或regexp,是一种十分简便.灵活的文本处理工具.它可以用来精确地找出某文本中匹配某种指定规则的内 容.在linux下,gre ...

  2. 深入浅出C/C++中的正则表达式库(二)——Boost.Regex

    写在前面:本文是<深入浅出C/C++中的正则表达式库>系列的第二篇,如果对本文感兴趣,相信你也会对<深入浅出C/C++中的正则表达式库--GNU Regex Library>感 ...

  3. C/C++中正则表达式库RE2的使用

    RE2是Google开源的正则表达式库,RE2是多语言支持的,提供对C/C++,Python,Ruby等,本文介绍C语言的RE2的正则库.正则表达式在工程实践中是非常有用的,可用于信息提取,内容比对, ...

  4. pcre c语言,C/C++中的正则表达式库 - PCRE,PCRE++

    最近使用boost::regex正则,遇到了延时问题,更换为pcre,延时问题得到解决.这里记录一下pcre的内容. PCRE,PCRE++介绍 PCRE :(Perl Compatible Regu ...

  5. 【.NET正则表达式库】v1.0上线

    在经历了近一年的构思.谋划.开发后,.NET正则表达式库(regex-lib.net)终于和各位网友见面了.欢迎大家访问:http://regex-lib.net/. 创意 坦率地说,.NET正则表达 ...

  6. 嵌入式java基准测试_Java正则表达式库基准测试– 2015年

    嵌入式java基准测试 在尝试使Java在计算机语言基准游戏的regexdna挑战中排名第一时,我正在研究Java正则表达式库的性能. 我可以找到的最新网站是2010年的tusker.org .因此, ...

  7. Java正则表达式库基准测试– 2015年

    在尝试使Java在计算机语言基准测试游戏的regexdna挑战中排名第一时,我正在研究Java正则表达式库的性能. 我可以找到的最新网站是2010年的tusker.org .因此,我决定使用Java ...

  8. Boost正则表达式库regex常用search和match示例 - 编程语言 - 开发者第2241727个问答

    Boost正则表达式库regex常用search和match示例 - 编程语言 - 开发者第2241727个问答 Boost正则表达式库regex常用search和match示例 发表回复 Boost ...

  9. vc 可用的正则表达式库

    vc 可用的正则表达式库 gnuregex,PCRE,greta,boost,CAtlReg 其中 CAtlReg 和greta 是微软的,不过 greta 据说已经多年不维护,不能在最新的编译器中编 ...

最新文章

  1. java 文件写入 读取_JAVA文件的两种读取方法和三种写入方法
  2. php函数的实现原理及性能分析
  3. ITK:图像阈值演示可用的阈值算法
  4. 我的世界java版月步教程_《我的世界》月步?幻影剑?大神才会的骚操作 第一个我就跪了!...
  5. 12345组成三个不重复数java,求大神帮忙!五子棋!只能识别按顺序识别!例如 12345 不能...
  6. TSP问题-简介与部分解法
  7. 毕设设计要点整理(一)——角色相关
  8. XUI框架圆角带图片 ButtonView
  9. 浏览器发送POST请求、DELETE请求
  10. 卷帘快门(Rolling Shutter)与全局快门(Global Shutter)的区别
  11. 仿Tumblr点赞心破碎动画
  12. 2 CRYPTO Bubble_Babble气泡密码
  13. 核心网在无线通信中的王者地位
  14. 异端的制作:数字人物Gawain
  15. 出现跨域问题的原因及其解决方法
  16. Python urlparse总结
  17. 用python编写nao机器人舞蹈_python控制nao机器人身体动作实例详解
  18. 如果你现在创业,我建议你这样搞
  19. dcoker常用命令
  20. java女人_Java是一个事业成功的女人

热门文章

  1. 红米7正式首发:4GB+64GB版本售价999元
  2. 资金严重短缺 法拉第未来把洛杉矶总部都卖了
  3. 新浪博客登录php发,PHP的万能密码登陆
  4. 简洁的c++http协议获取内容(一)
  5. 服务器报告它来自digest_2020年全球服务器市场规模及竞争格局分析
  6. Golang实践录:调用C++函数
  7. 一台CentOS云主机更改源的记录
  8. html的div块float后宽度无效,行内元素(例如)设置float之后才能用width调整宽度...
  9. 添加lua_非关系型数据库Redis之Lua脚本
  10. 【java】java wait 原理 synchronized ReentrantLock 唤醒顺序