zoukankan      html  css  js  c++  java
  • 不到一分钟,我删掉近6万行的代码

    前言


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

    故事开头


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

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

    故事上演


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

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

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

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

    故事结尾


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

  • 相关阅读:
    1、TensorFlow简介
    4、numpy+pandas速查手册
    3、pandas
    2、Numpy常用函数
    11、C内存四区模型
    1、Numpy基础
    10、C++函数
    开始
    创建与删除SQL约束或字段约束
    Halcon
  • 原文地址:https://www.cnblogs.com/chao8888/p/8365146.html
Copyright © 2011-2022 走看看