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

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

    怎么去掉呢?

    首先想到的是手动去掉。

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

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

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

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

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

    ^d+[.]

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

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

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

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

     

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

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

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

  • 相关阅读:
    配置postgres9.3间的fdw——实现不同postgres数据库间的互访问
    linux安装配置postgres及使用dblink
    一次“峰回路转”的troubleshooting经历
    10分钟内把永远跑不完的存储过程变为2秒跑完
    C++ friend关键字
    每天学点Linux命令之 vi 命令
    Shell
    九大排序算法及其实现- 插入.冒泡.选择.归并.快速.堆排序.计数.基数.桶排序.堆排序
    到位
    【LeetCode】-- 260. Single Number III
  • 原文地址:https://www.cnblogs.com/wangqiang3311/p/5784826.html
Copyright © 2011-2022 走看看