zoukankan      html  css  js  c++  java
  • 正则表达式的应用

    从网上复制了一段代码,不料代码的每一行前面都有行号加“.”,我要正确运行程序,必须得把这些多余的东西去掉。

    怎么去掉呢?

    首先想到的是手动去掉。

    看了下,有几百行代码,那需要多长时间,才能去掉?显然,这方法可行,但是太笨了,如果一个程序员,太勤劳了,那就不聪明。

    然后想到的是用vs编辑器打开,然后摁住“Alt”,可以竖向选择,然后一次性就去掉了。但是,我的电脑上内存不足,配置不高,不敢装vs,而是装了vs code。显然,这个方法不可行,不能杀鸡用牛刀啊。

    后来装了editplus,里面有正则匹配替换。今天我用Notepad来执行相同的任务。

    上面仅仅演示下,所以放了两行代码,点击按钮,执行结果如下:

    是不是,很神奇。
    当然,这只是正则小小的应用罢了,我临时想起来才用的。那我现在解释下这个正则表达式,对于不会写正则的朋友,又该如何是好?这是个问题。还好上面的正则,不难,可以借此机会一学。

    ^d+[.]

    ^位置匹配,匹配行的开头。

    d+专门用来匹配任意位正整数的,匹配上面的行号。

    [.]表示数字后面带. ,[]表示可匹配其中的一个字符,我用在这里是为了更清晰些,其实也可以去掉[]。如果数字后面不光是.,比如还有:此时我们可以用^d+[.:],中括号就用上派场了。如下图所示:

    如果数字后面,不仅一个字符,如下图所示:

     

    我们该如何处理呢?我们修改正则:^d+(?:.|:)+,用小括号把里面的字符包起来,小括号里面的竖线,表示or,那括号里面的?:又表示什么呢?这个就得对正则稍微了解多一点了。这个是只匹配,不捕获分组。默认带了小括号,是要分组的,影响正则的性能,另一方面,我们确实不想使用分组捕获的结果啊。我们只是单纯地匹配而已。如图:

    如果数字后面,有的有符号,有的没有符号,那我们又如何处理?不急,我们修改正则:^d+(?:.|:)*,*是量词,表示0个到多个,+表示至少一个,如图所示:

    好了,我就介绍到这儿,现实情况是复杂多变的,到时候根据具体情况,再修改正则。正则表达式强大之处有二,第一,任用户需求如此多变,我都能以不变应万变。第二,各门语言都支持正则,有的甚至是作为语言的一部分,如perl。

  • 相关阅读:
    call/cc 总结 | Scheme
    用call/cc合成所有的控制流结构
    词法作用域 vs 动态作用域
    数论部分第二节:埃拉托斯特尼筛法
    1022: [SHOI2008]小约翰的游戏John【Nim博弈,新生必做的水题】
    C++面向对象作业1
    数论部分第一节:素数与素性测试【详解】
    基数排序与桶排序,计数排序【详解】
    计蒜客:百度的科学计算器(简单)【python神解】
    优质免费在线学习网站【自用】
  • 原文地址:https://www.cnblogs.com/wangqiang3311/p/5784826.html
Copyright © 2011-2022 走看看