美文网首页正则表达式程序员iOS Developer
不到一分钟,我删掉近6万行的代码

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

作者: superxjhw | 来源:发表于2018-01-27 14:45 被阅读150次

    前言


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

    故事开头


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

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

    故事上演


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

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

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

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


    故事结尾


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

    相关文章

      网友评论

      • ZFJ_张福杰:注释和规范根本没必要删除,而且注释在团队开发中很重要,要想精简代码,还是考虑设计思路和代码封装和重用
      • 安妮爱吃糖love:可能项目开发规范本身就要求需要有空格、空行呢,完全删除也没必要。
        superxjhw:用来练习正则的,代码Git管理,练习完,直接一行命令恢复。不过有些文件的空行和注释的确没啥用,可以在当前文件替换。代码真没有空行看的也很不爽

      本文标题:不到一分钟,我删掉近6万行的代码

      本文链接:https://www.haomeiwen.com/subject/rhmnaxtx.html