在最近的一个项目中,发现之前的正则匹配模块对于长字符串匹配性能损失比较厉害,因此对长字符串下的各种正则匹配进行了略微研究并附有实例。本文参考了博客http://www.cnblogs.com/pmars/archive/2012/10/24/2736831.html(下文称文1),这篇文章也是对三种regex库进行了比较,但有些地方我还有一些自己的见解,特此罗列如下,感谢这篇文章的作者。...
分类:
编程语言 时间:
2014-11-06 20:10:19
阅读次数:
337
逛ACM神犇的博客的时候看到的这个神奇的算法KMP吧,失配函数难理解,代码量长BF吧,慢,很慢,特别慢。BM吧,我不会写。。。现在看到了Sunday算法呀,眼前一亮,神清气爽啊。字符串匹配算法的效率大概是取决于在发生失配时如何进行下一步的问题。其他咱就不说了。这个Sunday算法在发生失配的时候,跳...
分类:
编程语言 时间:
2014-11-06 09:15:27
阅读次数:
238
常见的字符串匹配时,模式串长度为n,源串长度为m,则从头匹配,两个指针i指向源串,j指向模式串,如遇到不同则回溯使j=0,这样就要反复匹配会使效率变低。因为在如今i之前 的模式串与匹配串的匹配是同样的,即回溯时,不用将模式串与源串进行匹配,而仅仅将模式串与自身匹配就可以得到其是否须要回溯以及回溯到何...
分类:
编程语言 时间:
2014-11-04 22:31:39
阅读次数:
246
枚举一个串的所有子串,和其余的串匹配,裸kmp的题。
#include
#include
#include
using namespace std;
const int maxn = 222;
const int maxd = 4010;
int f[maxn];
char str[maxn];
char t_str[maxn];
char c_str[maxd][maxn];
void ini...
分类:
其他好文 时间:
2014-11-04 19:39:40
阅读次数:
234
KMP本身不复杂,但网上绝大部分的文章(包括本文的2011年版本)把它讲混乱了。下面,咱们从暴力匹配算法讲起,随后阐述KMP的流程 步骤、next 数组的简单求解 递推原理 代码求解,接着基于next 数组匹配,谈到有限状态自动机,next 数组的优化,KMP的时间复杂度分析,最后简要介绍两个KMP的扩展算法。
全文力图给你一个最为完整最为清晰的KMP,希望更多的人不再被KMP折磨或纠缠,不再被一些混乱的文章所混乱,有何疑问,欢迎随时留言评论,thanks。...
分类:
其他好文 时间:
2014-11-01 21:52:40
阅读次数:
325
题意:给定一个主串,和单词序列,问最少在主串删除多少字母,可以使其匹配到单词序列,如
browndcodw
cow
milk
white
black
brown
farmer
删除主串中的两个d,brown和cow就与整个主串匹配了...
分类:
其他好文 时间:
2014-11-01 16:23:58
阅读次数:
164
题目要求: 给一串很长字符串,要求找到符合要求的字符串。 例如目的串:123,则1*****3***2,12*****3这些都要找出来。 其实就是类似一些和谐系统。。。。。。题目分析: 1.假如目的串为:"423",输入长字符串为:"4fsdfk2jfl3fd2jfksd3j4d4d4jkf...
分类:
编程语言 时间:
2014-10-31 01:06:30
阅读次数:
356
前面介绍在BF,KMP这些算法的时候老是提到BM这个东西,究竟这什么东西,有啥高深的,这些问题我们如今不去考虑。不知道,认真读前几篇文章的读者有没有发现前面的算法都是从模式串的前面開始匹配的,那我们就想能不能从模式串的后面開始匹配了? 答案肯定是能够的。所以这就有了我们今天的这篇文章Horspool...
分类:
编程语言 时间:
2014-10-29 16:29:06
阅读次数:
237
正则表达式是可以匹配文本片段的模式。使用re.split()来根据匹配项来分割字符串(匹配符是逗号和空格):使用re.sub()来使用给定的替换内容将匹配模式的子字符串替换掉(用jinzigui将text中的name替换掉):使用re.esacpe()是一个对字符串中所有可能被解释为正则运算符的字符...
分类:
编程语言 时间:
2014-10-28 19:50:55
阅读次数:
236
本文主要记录和总结本人在阅读《Python标准库》一书,文本这一章节的学习和理解。
其实在Python中,使用文本这样的一些方法是特别常用的一件事。在一般的情况下,都会使用String这样的一个类,应该算是Python中最基础的一个标准类了。
1.3.6 用组解析匹配
match.groups()会按照表达式中与字符串匹配的组的顺序返回一个字符串序列。
使用group(...
分类:
编程语言 时间:
2014-10-27 14:23:33
阅读次数:
177