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;
}