DEELX 正则表达式引擎(v1.2)

DEELX 正则表达式引擎(v1.2)

简介见文末。

选择使用deelx的理由:全部代码位于一个头文件(.h)中, 比任何引擎都使用简单和方便。

利用分组从字符串当中提取出化学元素英文名。比如 Ag,Au,Fe3O4,Al2O3,K2O,CaO......

 1 #include "deelx.h"
 2 #include <string>
 3 //该正则表达式识别字符串当中是否有化学元素英文名。
 4 //特征:首字母大写,由英文字符和数字组成。
 5 //示例:数学变换_Ag_三门峡 识别分组:数学变换_ Ag _三门峡
 6 bool extractElement(const std::string &header, std::string &out)
 7 {
 8     static CRegexpT <char> regexp("([^A-Z]*)([A-Z][A-Za-z0-9]*)([^A-Za-z0-9]*)");
 9     MatchResult result = regexp.Match(header.c_str());
10     int nGroup = result.MaxGroupNumber();
11     if (nGroup > 1)
12     {
13         char name[_MAX_PATH];
14         int start, end;
15         start = result.GetGroupStart(2);
16         end = result.GetGroupEnd(2);
17         strncpy_s(name, header.c_str()+start, end-start);
18         out = name;
19     }
20     else
21         out = header;
22
23     return true;
24 }

简介:

DEELX 是一个在 C++ 环境下的与 Perl 兼容的正则表达式引擎。是 RegExLab 开展的一个研究开发项目。

基本特点
与 GRETA、boost 相比,DEELX 独到之处:
DEELX 不足之处:
源代码下载

[下载:DEELX]

DEELX 可免费用于个人用途及商业用途。


资助 DEELX 的开发
如果 DEELX 对您有用,解决了您的问题,提高了您的效率,节约了您的时间,我们真心希望您能对 DEELX 提供一些资助:

A)您可以选择直接以现金的方式,资助到站长支付宝 [email protected]

B)您也可以通过购买 “Regex Match Tracer 去除广告” 来支持站长,点击购买


更多参考:

[ 正则表达式语法] - 详细介绍 DEELX 支持的正则表达式语法。

[ 编程帮助] - 编程指南,详细介绍如何将 DEELX 用于你的 C++ 项目。

[ 表达式工具 Match Tracer] - 推荐使用正则表达式可视化编写及调试工具。

时间: 2024-08-13 15:43:41

DEELX 正则表达式引擎(v1.2)的相关文章

Python的regex模块——更强大的正则表达式引擎(未完待写)

Python自带了正则表达式引擎(内置的re模块),不过支持的特性比较单薄,以下这些特性都不支持: 固化分组    Atomic grouping 占有优先量词    Possessive quantifiers 可变长逆序环视    Variable-length lookbehind 递归匹配    Recursive patterns Matthew Barnett为Python写了一个更强大正则表达式引擎——regex模块,可以替代内置的re模块.除了上面说到的几个特性,还有很多新东西.

基于ε-NFA的正则表达式引擎

正则表达式几乎每个程序员都会用到,对于这么常见的一个语言,有没有想过怎么去实现一个呢?乍想一下,也许觉得困难,实际上实现一个正则表达式的引擎并没有想像中的复杂,<编译原理>一书中有一章专门讲解了怎么基于状态机来构建基本的正则表达式引擎,讲这个初衷是为词法分析服务,不过书里的东西相对偏理论了些,实现起来还是要费些功夫的,只是它到底指明了一条路,当然,书里只针对基本的语法进行了分析讲解,对于在实际中有些非常有用的很多扩展语法,它就基本没有涉及了,这些扩展的语法中有些是比较好实现的,有些则很难. 基

1000行代码徒手写正则表达式引擎【1】--JAVA中正则表达式的使用

简介: 本文是系列博客的第一篇,主要讲解和分析正则表达式规则以及JAVA中原生正则表达式引擎的使用.在后续的文章中会涉及基于NFA的正则表达式引擎内部的工作原理,并在此基础上用1000行左右的JAVA代码,实现一个支持常用功能的正则表达式引擎.它支持贪婪匹配和懒惰匹配:支持零宽度字符(如"\b", "\B"):支持常用字符集(如"\d", "\s"等):支持自定义字符集("[a-f]","[^b-

简易正则表达式引擎的实现

正则表达式基本每个程序员都会用到,实现正则表达式引擎却似乎是一个很难的任务.实际上,掌握<编译原理>前端的词法分析部分知识就能够实现一个简单的正则表达式引擎.这里推荐一下网易云课堂的课程.http://mooc.study.163.com/course/USTC-1000002001?tid=1000003000#/info 基本的正则表达式  正则表达式由字符与元字符组成,整个表达式用于描述符合某些特定特征的一类字符串,比如说表达式:abc,它表示 "abc" 这个字符串

实现一个 DFA 正则表达式引擎 - 4. DFA 的最小化

(正则引擎已完成,Github) 最小化 DFA 是引擎中另外一个略繁琐的点(第一个是构建语法树). 基本思路是,先对 DFA 进行重命名,然后引入一个拒绝态 0,定义所有状态经过非接受字符转到状态 0,0 接受所有字符转换为自身.也就是说我们先建立一个转换表,然后把第一行填写为: state a b c d e f g h ... 0 0 0 0 0 0 0 0 0 0 再之后,我们讲 DFA 的其余状态从 1 开始重命名,填入状态表.代码实现如下: // rename all states

(2015大作业)茹何优雅的手写正则表达式引擎(regular expression engine

貌似刚开学的时候装了个逼,和老师立了个flag说我要写个正则表达式引擎,然后学期末估计老师早就忘了这茬了,在历时3个月的懒癌发作下,终于在这学期末deadline的时候花了一个下午加晚上在没有网的房间写完了它,于是便有了这篇blog,本来想正儿八紧写篇论文,说不定毕业设计可以直接丢一篇这个走人,但第一觉得一个晚上写好的东西太low了,第二自己实在不适合写那种正经的论文,于是还是写从高中开始的一贯的乱七八糟体好了. 主要写自己写的时候遇到的一些瓶颈,例如茹何储存一个图,茹何遍历一个图,茹何表示一个

实现一个 DFA 正则表达式引擎 - 1. 语法树的构建

语法树的构建这里分为三步: 1. 补全正则表达式的省略部分(主要是省略的 concat 和 or 连接符)并翻译七个集合字 '\w', '\W', '\s', '\S', '\d', '\D' 和 '.': 2. 转换为逆波兰表达式: 3. 转换为语法树: 这里以正则表达式 (a*b|ab*) 为例,逐步解释构建语法树的过程. 1. 补全正则表达式的省略部分 符合我们要求的正则表达式只有三个正交的运算符,或运算,连接运算,重复量词.这里将正则表达式转换为以上三种运算加上两个括号运算符.转换规则比

实现一个 DFA 正则表达式引擎 - 0. 要求

决定把轮子造的飞起,试着用 JAVA 写个正则引擎. 要求: 1.  纯 DFA,无需支持 捕获组 和 断言: 2.  时间复杂度 O(n): 3. 支持 ASCII 字符集,支持基本语法:支持'\w', '\W', '\s', '\S', '\d', '\D' 和 '.'  七个集合及其他单字符转义,支持 ?, *, +, {x}, {x,}, {x,y} 六种量词,支持集合反转,支持括号. 4. 避免使用第三方工具,编译为无依赖库. (正则引擎已完成,Github)

实现一个 DFA 正则表达式引擎 - 3. NFA 的确定化

我们上一节已经将 NFA 构建出来了,我们的 NFAState 对象的结构实际上是这样的: NFAState { private Set<NFAState> directTable; private Map<Character, Set<NFAState>> transitionMap; private int id; } 其中 transitionMap 是该状态接受 Character 后可以转换的状态的映射表. 那么以初始状态 0 为例,我们是不是可以认为状态 0