摘要: 提到多模式匹配算法,就得说一下Wu-Manber算法,其在多模式匹配领域相较于Aho-Corasick算法,就好象在单模式匹配算法中BM算法相较于KMP算法一样,在绝大多数场合,Wu-Manber算法的匹配效率要好于Aho-Corasick算法。这个算法是由吴升(台湾)和他的导师Udi Manber在九十年代提出。当然,要想充分理解WM算法如何加快多模式匹配的效率,还需要对BM算法的深刻了解,可以参考我的另一篇文章《BM算法详解》。在BM算法中引入的坏字符跳转概念,是BM算法能够在一般应用场景中,效率高于KMP算法的主要原因。WM算法在多模式匹配中,也引入了类似的概念,从而实现了模式匹配中的大 阅读全文
posted @ 2014-03-18 11:11 玩笑528 阅读(467) 评论(0) 推荐(0) 编辑
摘要: 1977年,Robert S.Boyer和J Strother Moore提出了另一种在O(n)时间复杂度内,完成字符串匹配的算法,其在绝大多数场合的性能表现,比KMP算法还要出色,下面我们就来详细了解一下这一出色的单模式匹配算法,在此之前推荐读者读一下我的另一篇文章《KMP算法详解》,对于透彻理解BM算法大有裨益。在讲解Boyer-Moore算法之前,我们还是要提一提KMP算法的老例子,当模式串与目标串匹配至如下位置时:1234567891011121314151617181920212223242526babcbabcabcaabcabcabcacabcabcabcacab我们发现targ 阅读全文
posted @ 2014-03-18 11:08 玩笑528 阅读(565) 评论(0) 推荐(0) 编辑
摘要: KMP算法,是由Knuth,Morris,Pratt共同提出的模式匹配算法,其对于任何模式和目标序列,都可以在线性时间内完成匹配查找,而不会发生退化,是一个非常优秀的模式匹配算法。但是相较于其他模式匹配算法,该算法晦涩难懂,第一次接触该算法的读者往往会看得一头雾水,主要原因是KMP算法在构造跳转表next过程中进行了多个层面的优化和抽象,使得KMP算法进行模式匹配的原理显得不那么直白。本文希望能够深入KMP算法,将该算法的各个细节彻底讲透,扫除读者对该算法的困扰。KMP算法对于朴素匹配算法的改进是引入了一个跳转表next[]。以模式字符串abcabcacab为例,其跳转表为:j12345678 阅读全文
posted @ 2014-03-18 11:04 玩笑528 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 1.作用 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。2.格式 grep [options]3.主要参数 [options]主要参数: -c:只输出匹配行的计数。 -I:不区分大 小写(只适用于单字符)。 -h:查询多文件时不显示文件名。 -l:查询多文件时只输出包含匹配字符的文件名。 -n:显示匹配行及 行号。 -s:不显示不存在或无匹配文本的错误信息。 -v:显示不包含匹配文本的所有行。 pattern正则 阅读全文
posted @ 2013-11-19 10:22 玩笑528 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 最近新接手一个项目,代码风格偏纯C的风格,所以在熟悉代码的时候按照项目组的代码规范对代码进行相应的修改,但悲剧出现了。。。比如下面的代码if(alarm_info->_breach_reason&4){//dosomething;}按照代码规范,顺手改为如下代码if(0!=alarm_info->_breach_reason&4){//dosomething;}突然就发现该判断失去了作用!!!原因相信大家也看出来了其实‘!=’的优先级是要高于‘&’的。这样就导致只要alarm_info->_breach_reason不为0,判断永远都是真的。。。 阅读全文
posted @ 2013-11-06 14:31 玩笑528 阅读(435) 评论(0) 推荐(0) 编辑