资深架构师Sum的故事:正则!入门就是这样简单

 | 故事背景

  职场如战场!Sum带领三个小队友用了两周,成功把代理功能给干出来了。如果说产品经理是最魔鬼的指挥官,那测试就是最魔鬼的教官。这两周,让Sum深深领略了什么是X市的日出。

  不过话又说回来,战斗时光是酸苦且甘甜的,每每回忆,嘴角都会泛起流糖般的微笑,那是年轻时月亮的背影,那是年轻时初升太阳的轮廓。

  不知道其他热爱程序的人是不是这样想的,但Sum是这么认为的。

  Sum依旧按部就班。

  这日Sum早早到公司了,8点,太阳才刚微热。晨雾还未散去,站在落地窗向外看,世界就像打开馒头蒸笼般冒着热腾腾的蒸汽。

  Sum打开电脑,趁着开机消耗的时间,去泡了杯咖啡。回到座位,电脑早已经开好。

  看了下工作日程,和往常一样,审计代码、梳理需求、开会,开会,还是开会。

  那就从审计昨日代码开始吧,Sum从git下载了昨日的代码(因为X公司有固定发布日,所以代码提交后,第二天由Sum等项目负责人去负责审计),下载完成后,Sum打开了zendstudio(因为Sum负责公司的PHP模块开发,所以负责审计这部分代码),导入最新的工程,对照更新日志,打开对应的修改过文件,一遍喝着咖啡,一遍看着代码。

  Sum在看到一个功能函数库文件的时候,发现一个curlApi($url,$param,$type=1)函数,实现过程有一段这样的代码,看起来很别扭,如下:

  

复制代码
1 if(strpos($response,"__callback(")!==false){ 2   $response=str_replace(array("__callback(",")"),array("",""),$response);     3 } 4 $returnData = json_decode($response,true); 5 return $returnData;
复制代码

  结果看起来很正常,就是curl一个API,返回的$response有可能包含了__callback字符串,不是纯的json文本,所以这位队友就在返回结果做了个判断,如果存在__callback(的字符串,就要替换成空,再近些json转数组的操作。但是,在Sum开起来,这里面埋了一个雷,什么雷呢?如果接口提供方哪天心情不好了,把__callback换成了__query,而且不通知到技术部,那这个用法就废了,怎么办呢?Sum第一个念头就是使用正则表达式,去匹配这类特殊的响应值。

  心中有了想法,Sum就想做一个教程,给团队的成员普及一下,于是乎,Sum打开了PPT,准备起了培训材料。。。。

 

| 需求分析

  Sum要做一分通俗易懂,易于宣讲的正则表达式的教程。

 

| 开干

  Sum觉得,要能下意识的想到用正则表达式,那必须要把正则表达式的表,给背熟,融入到骨子里去,然后再经过多个demo的练习,形成如果需要处理字符串或者文本(比如爬虫),首先想到的就是正则表达式。所以,Sum就在PPT的首章,贴出了正则表达式的规则表。

 

  普通字符:普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号比如/demo/,就是匹配字符串或者文本,有无demo这个字眼

 

  非打印字符(指在计算机中有一些字符是确确实实存在,但是它们不能够显示或者打印出来,以ASCII码表为例,ascii码值在0-31的为控制字符,无法显示和打印):

                                非打印字符也可以是正则表达式的组成部分。下表列出了表示非打印字符的转义序列

字符 描述
\cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
\f 匹配一个换页符。等价于 \x0c 和 \cL。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信