正则表达式程序员iOS Developer

不到一分钟,我删掉近6万行的代码

2018-01-27  本文已影响150人  superxjhw

前言


最近在学习正则,刚过入门阶段,我发现自己已经深深的爱上了正则,不仅仅是因为她的独特和优秀,更多的是那魔性的力量,强大到让我难以置信。如果你对正则还没有了解,不管你从事哪一行,都建议你去学一下,毕竟,她会对你以后的工作节省众多的时间。节省的时间干什么呢?你可以去旅行啊,世界这么大,还是去看看吧!

故事开头


所谓不到一分钟,我删掉近6万行的代码这个问题,其实我是利用正则删掉了整个项目中,所有的空白行和注释行。这样做,除了是为了测试和练习正则之外,我们还可以优化代码结构,尤其是对那些有强迫症的人,比如说我,多个空行少个空行都不舒服。

我们可以使用正则搜索任何想要的内容,而普通搜索是达不到我们的要求的。我们还可以使用替换功能,删除和修改任意内容到指定格式。接下来的内容就是故事的正文,虽然仅仅是正则冰山一角,但依旧独美。

故事上演


1.首先我们来匹配所有的空白行,空白行我们可以使用^$来匹配,但是这样仅仅是能匹配空行,就是一行当中没有任何字符,包括空格。所以我们使用^ *$\n,其中的脱字符表示匹配行开头,美元符$代表行结尾。紧跟符号的是一个空格和一个*号,空格和*一起表示,中间可以有任意多个空格,包括没有空格。最后的\n代表的是换行符,之所以要匹配到换行符,是因为我们要用空白内容替换掉所有的空白行,只有这样才能消除空行,不然替换结果依旧是一个空白行。

2.我这边使用的工具是Xcode,测试的是一个iOS项目。搜索方式我们从文本搜索切换到正则搜索,搜索的正则表达式为^ *$\n,替换内容为空即可,见下图。匹配成功后,执行就可以。我把所有的空行去掉后,项目编译成功。

3.接下来我们介绍如何删除注释行,这里的注释删除以//开头(//前可以有空格),对于多行注释和代码后紧跟的单行注释不生效,当然,可以使用正则重新匹配这些特殊的注释。^ *//.*$\n,这个就是我们匹配单行注释的正则表达式,其中^之后紧跟着空格和*,表示可以任意多的空格,也可以没有,//匹配双反斜杠,其中的点是通配符,可以匹配任意字符,.*连在一起表示可以任意多个字符,也可以没有。替换内容仍旧是空,看效果。

4.虽然我们只是测试,但是我们会经常遇到这种需求。比如在开发中,我们会将接口返回的json数据转化为模型,我一般习惯复制json的部分内容放到模型中,方便转换。久而久之,项目遗留的这些无用注释,需要删除,因为作用不大,那么我就可以通过正则秒杀全场,而不用苦逼的找到对应的模型文件,一块一块的删除。


故事结尾


看了以上的例子,希望可以触发出你对正则的兴趣,这里附上两篇正则学习博客。
正则入门实例拓展
正则基础与细节回顾

上一篇下一篇

猜你喜欢

热点阅读