最近在看正则表达式,基本的使用已经没”有问题了,但是还不是能够特别的得心应手;在学习程序的时候,就曾想过一个问题:“对于程序员而言,只针对代码最想实现的是什么?”
当时给自己的答案是可以如已所想的操作每一行字符串,甚至是每一个字符串。
现在在处理文本问题的时候,这个想法又一次的出现,确实,一个合格的程序员确实应该做到这一点。我们在工作中处理两类问题最多。一类是:文本处理;另一类是数据处理。其实这二者可以并称为一种,因为数据处理在数据库端也是从一维形式进行最初的处理,只是为了方便人们去处理同时也符合当代人工作的方式,因为excel在大多数人的工作中所占有的比重还是很高的。但其实处理的原始阶段,他也是以一维的形式进行储存的。
在处理文本问题时有许多的算法交叉在其中,对于当前许多的程序员而言,我们更多要做的事情是如何合理的利用工具,而对于如何了解、改进工具大家是不太关心的。在此,个人觉得了解工具的底层是十分有必要的,而且底层更多牵涉的是算法,算法其实是最考验自身的,同时,也是日后保持良好竞争力的重要手段。换句话说:当前实现某一功能考验的更多的是工具的使用,算法才是对程序员本身最大的考验。不过,我还是要承认资本的力量,在资本的推动之下,短期收益高的必然是利用工具取得成果的人,但是从长远来看,掌握算法的人才会是最后的赢家。如果二者可以兼得,那就会是理论与实践的高度结合,最终的结果也会更好。
在此,其实更想提出待解决的问题:
如何判断一组字符串含有另一组字符串?
问题已经提出,其实还想分析一下文本处理的方式。我们经常处理的文本问题由于量比较少,而且结构独特,对于批量处理的需求并不高,所以很少会去研究这一块的问题。如果是经常需要批量操作文本,且文本结构具有高度的想似性的时候,大家一定也会想过是否有什么样的方式可以实现批处理的功能?而且批处理的时候我们更多的是要从一堆字符串中找出自己想要的字符串,这是查找功能的初始,在编辑器中由于已经内置了正则或者其他的文本处理算法,所以我们可以直接利用,但是如果让我们自己来实现,该如何实现?
就像前几天遇到的一个问题:
如何比较出两组字符串中的不同?(字符串的量很大,如果您在模拟解决这个问题的话,建议你把数据量弄的大一些)
还有一个在使用下而表达式的过程中所遇到的问题:常规情况下,我们在匹配我们想要的信息时,更多的是以关键字在文本中去匹配,但是更多的时候我们想要包含我们所输入关键字的一整行或者是连续的几行,但是文本处理的算法是从前到后,从左到右的,他们会将第一个符合规则的数据选择出来中,然后就去匹配结尾的关键字了,假如在开头有多个与你想要的起始关键字重复的字符串,这个时候我们要怎么去处理?有没有什么方式可以满足从我们指定的关键字中间出发,向两边去进行相关匹配?而且匹配到第几次可以由我们进行控制呢?
上述问题如果初步满足了之后,我们就会面临新的问题:假如字符串的量很大并且你也不知道你自己要匹配的字符串到底是从那开始的时候,我们该如何去处理呢?有没有更好的方式可以解决这个问题?
所以如果我们要解这个问题,我们可以不管具体的实现,就只是谈方案,我们可以有那些方案呢?