DEELX 是一个在 C++ 环境下的与 Perl 兼容的正则表达式引擎。是 RegExLab 开展的一个研究开发项目。
基本特点:
- 支持与 Perl 兼容的正则表达式语法。
- 支持 IGNORECASE, SINGLELINE, MULTILINE 等常见匹配模式。
- 兼容性强,能在 vc6, vc7, vc8, gcc, Turbo C++ 等大多数 C++ 环境编译。
- 支持命名分组,条件表达式,递归表达式等多种高级特性。(1.2版本新特点)
与 GRETA、boost 相比,DEELX 独到之处:
- 完全使用模版库编写,支持 char, wchar_t, int 等以及其他基类型版本。
- 全部代码位于一个头文件(.h)中, 比任何引擎都使用简单和方便。
- 支持从右向左匹配模式,可从文本结束位置向前搜索匹配。
- 可防止零长度子匹配循环无限次而产生的死循环。(1.2版本新特点)
DEELX 不足之处:
- DEELX 是完全免费的实验室产品。
- 为弥补实验室产品的不足,本站同步推出了与本引擎完全兼容的调试工具:Match Tracer。
DEELX 可免费用于个人用途及商业用途。
DEELX的中文帮助下载地址:http://www.regexlab.com/download/?/deelx/deelx_zh.chm
DEELX的源代码的下载地址:http://www.regexlab.com/download/?/deelx/deelx.zip
个人我觉得DEELX实用性还是蛮不错的,在此推荐给那些喜欢正则表达式的人。
看一个示例:
DEELX 正则引擎编程示例:判断数字
判断一个字符串是否全由数字组成。
表达式
/d+
方法
MatchExact
代码
#include "deelx.h"
int test_all_number(const char * string)
{
// declare
static CRegexpT <char> regexp("//d+");
// test
MatchResult result = regexp.MatchExact(string);
// matched or not
return result.IsMatched();
}
int main(int argc, char * argv[])
{
char * str1 = "12345";
char * str2 = "12345 abcde";
printf("'%s' => %s/n", str1, (test_all_number(str1) ? "yes" : "no"));
printf("'%s' => %s/n", str2, (test_all_number(str2) ? "yes" : "no"));
return 0;
}