正则表达式拾遗

此篇有毒,后文有待详细验证...

最近几天天气出奇的好,也许是到了夏秋交际的时候吧,天气格外的晴朗,一阵风不仅吹走了京城多日的阴霾,也吹走了夏日让人难耐的酷热。

不知道你有没有发现,北方的秋天天空总是干净像湖水一样清澈而明亮的,一簇簇的白云就是这秋天的湖面上最好的点缀,天空如此可是行道之间却是另外一番景象。北方的秋天总少不了有些萧瑟感的秋风,裹挟着杨柳的落叶吹散在道路与行色匆忙的行人之间,告别几日阴雨的时候,这番景象当然会让人有一种“ 萧瑟秋风今又是”的感叹,每逢秋天来临,或许是传承自古代士大夫一种精神习惯吧,远在他乡的人总会有种去国怀乡的愁绪,即使身在家乡也会有些感慨时光荏苒往事难再的心情。凡此种种莫不是这萧瑟的秋风,与秋风落叶之间行色匆匆的行人所勾起的自己的回忆罢了。

每每秋风吹起的时候,你会不会在这个时候停下脚步,抬头看向这天空,忽然想起那些曾经见过的风景,那些经历过的往事呢。

最近在做日志解析分类入库的事情,首要的任务就是设计数据模型和分析syslog解析日志这两件事,在对日志格式以及上下文关系分析总结之后对日志格式与结构做出抽象然后创建数据模型,至此工作算是完成了三分之一,剩下的工作主要就是解析syslog了。之前没有做过相关的工作,查一下大家常用的解析方法都是用的正则匹配(好像没有别的办法了,哈哈),所以就准备用正则了。正则之前虽然也写过,不过呢都是左手倒右手的买卖,测试的时候那看起来就像是在搞一门玄学,这次工作呢有了一些收获,就是开始理解正则种各种术语的含义了,也值得记录一下,虽然这些东西在有些人看起来可能只是读一遍文档就能理解的,但是我在这方面上一直不是很在行,所以觉得还是可以写下来,以便之后查看回顾。

首先粘一下正则的维基链接:https://zh.wikipedia.org/wiki/正则表达式
开始的时候在正则里边有两个表达方式很让人迷惑,就是(pattern)和(?:pattern)分别为匹配获取和匹配不获取,这两个的具体含义之前一直也没有搞清楚,加之对几种语言的正则库理解不到位的情况,一直没能弄明白这两点的问题。这里做一下记录,以python为例,python代码中的正则库为re,在编译表达式之后进行匹配需要用到match方法,如果表达式与带匹配字符串中的部分子串相匹配的话match方法会返回一个匹配对象,如果没有匹配的话会返回一个None,这也是我们经常用match做参数校验的方式,如果表达式中没有(pattern)的情况那么它会返回整个匹配的情况,如果有(pattern),那么它会把(pattern)的匹配结果也写到返回的匹配对象中。当然(?:pattern)含义就是虽然匹配但是不会做记录,不会写到返回的匹配对象中。

你可能感兴趣的:(正则表达式拾遗)