正则表达式的应用

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

怎么去掉呢?

首先想到的是手动去掉。

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

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

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

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

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

^\d+[\.]

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

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

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

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

 

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

 

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

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

 

posted @ 2016-08-18 17:43  micDavid  阅读(392)  评论(0编辑  收藏  举报