随便在网上搜索了一些正则表达式,都能正常匹配,太牛了,不得不第一时间抢先发在这!
用汇编写出这样的东西,无语啊。稍稍看了下反汇编的代码,可以确定不是用的别人的库,没有C语言那些优化的东西,应该是纯汇编的编译代码。我是小人。。竟然不相信这件事。。。
======================================================
http://www.aogosoft.com/bbs/upfile/20093110046_RegExp.rar
正则表达式汇编版
==================================
自主开发的正则表达式引擎库,纯汇编语言编写,支持大部分通用正则引擎标准,通过编码的设定,可支持双字节搜索,性能稳定,速度比其它通用引擎要快(当做不可能是全部任意表达式,但是普遍要快)。提供测试器给大家测试,之后发布正式版本时,将提供引擎库给程序员使用。
支持的表达式符号如下所示:
====================================
\t 制表符
\n 换行(根据换行模式分别为0D/0A/0D0A,对应UNIX/MAC/WINDOWS)
\b 字符首或字符尾
\B 非字符首与字符尾
\w 单词
\W 非单词
\s 空白,包括空格,制表符, 其它的通用部分引擎还包括 0D/0A
\S 非空白
\d 数字
\D 非数字
\h 十六进制
\H 非十六进制
\l 小写
\L 非小写
\u 大写
\U 非大写
\x 两个十六进制 指定 ASCII
\X 4个十六进制 指定 DBCS
同时,转义符 \b 在字符集 []中,表示退格符(ASCII 08),而\B则不支持! 无明确编码定义的转义符号则不支持-表示范围,如[c-\w],解析为字符c与-以及\w,而不是c-\w!
^ 搜索开头与行首(多行模式)
$ 搜索结尾与行尾(多行模式)
[] 字符集
[^] 非字符集
. 任意字符(单行模式匹配包括换行符)
* 0或更多
+ 1或更多
? 0或1个
{n,m} 最少n,最多m,支持{n},{n,}
*? 0或更多(非贪婪)
+? 1或更多(非贪婪)
?? 0或1个(非贪婪)
{n,m}? 最少n,最多m,支持{n},{n,}(非贪婪)
(exp) 表达式组,自动引用
(?:exp) 表达式组(不引用)
(?>exp) 贪婪子表达式(不引用)
(?=exp) 前向零宽断言匹配(不引用)
(?!exp) 前向零宽断言非匹配(不引用)
(?<=exp) 后向零宽断言匹配(不引用,所有限定符为非贪婪模式)
(?<!exp) 后向零宽断言非匹配(不引用,所有限定符为非贪婪模式)
(?ism-ism:exp) 参数修改表达式,仅对当前表达式有效
\0-\9 后向引用匹配
与现在的功能最多的正则引擎相比,以下表达式功能不支持:
====================================
(这些功能并不全部是标准,只有部分正则引擎全部支持)
1.(?<x>-<y>exp) 平衡组表达式,比如进行C语言语法识别,可以用<?<if>-<else>exp)来跳过一个完整的if/else/endif分支,自动找到配对的条件结束位置。
2.(?(exp)yes|no) 断言条件分支,这种表示方式,它的意思是,把(exp)作为条件断言,如果为TRUE,则选择yes分支,否则匹配no分支。
3.(exp@1) 不支持递归匹配,在当前组中引用自身组,形成递归匹配,如果条件一直满足,很容易成为死循环,这种功能不同于组引用,组引用是引用匹配的结果,而递归引用是引用表达式。
4.\p(name)exp 不支持组命名,只能使用 0-9 组引用,在替换时可以使用 0-9,查找时只能使用 1-9(参考第3条,不支持递归匹配,则\0永远无效)
5.(?im-nsx)exp 为表达式后面的部分改变处理选项,这个功能是修改后面所有的匹配设置,不支持,但支持子表达式选项修改 (?im-nsx:exp)。如 \w(?-i:[a-z]),匹配一个单词,然后匹配a-z,但是要区分大小写(?-i:表示去掉忽略大小写设置,反之(?i:exp)则是要忽略大小写)。
6.++ ?+ {n,m}+ *+ 勉强模式不支持,贪婪与非贪婪模式是标准,但勉强模式是后面引入的概念,用贪婪子表达式 (?>exp) 实际上能组合出相同作用的表达式。
7.\* 部分转义符不支持,以及部分转义符意义不同,如\r我的正则引擎不支持,因为有选项指定换行是 Unix/MAC/Windows 模式,同时,所有字节都可使用\x**来指定实际编码,如\x0D,\x0A,\x07,另外,还支持\X****来指定双字节范围,部分引擎如.Net相同的转义符是\u****。前者是实际编码,后者是UNICODE。而\u在我的引擎中表示大写字符。
正则表达式的说明请在网络上搜索,推荐<正则表达式30分钟入门教程>,因测试版本未发布库文件,程序员使用手册暂未提供!
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!