正则表达式(一)—位置锚定

>>2020,微服务装逼指南

正则表达式 

位置锚定


其实本来是准备将sed以及awk的用法放在grep后面总结的,但是考虑到如果不先讲正则表达式,sed和awk的很多东西没办法讲,因此决定将正则表达式提前到它们前面讲。


如果你已经掌握了正则表达式的用法,那可以拿这篇文章再复习巩固下;如果你从来没听过正则表达式是什么,或者对其一知半解,那么看这篇文章就对了。坚持看完并在方便的时候打开你的电脑动手实践,就能明白正则表达式是什么了,相信我,将正则表达式用在你的工作或学习中,一定会提升你的效率。好了,下面让我们一起学习!


考虑到正则表达式内容还是不少,一篇文章的篇幅可能承载不了这么多信息量,因此会将正则表达式这部分分成几篇文章,今天这篇主要是讲正则表达式中与位置匹配相关的部分。


还是先准备一个测试文件用来说明正则表达式的用法,为了方便大家在阅读文章后面内容的时候不用再捣腾到前面看这个原始文件,因此这个文件在后面可能会贴多次,不过还好,也费不了多少流量,还请各位见谅。

正则表达式(一)---位置锚定

1
^

^表示锚定行首,可能大家不太明白这个锚定行首是什么意思,没关系,看一个例子就能马上知道怎么回事了。现在我们需要在regular.txt文件中找出行首是guo的行。

正则表达式(一)---位置锚定

可以看出,尽管原始文件的第2、4、8行都含有guo,但是它们都不是出现在行首,因此不会匹配,匹配上行的都是行首为guo的行。这就是前面所说的锚定行首的意思。是不是一下就理解了。

2
$

$表示锚定行尾, 前面已经知道了锚定行首 ,那么锚定行尾不用说也应该知道怎么回事了吧,对,$表示的出现在此字符前面的内容都必须出现在行尾才会匹配,比如说需要在regular.txt文件中找出行尾是guo的行。 

正则表达式(一)---位置锚定

3
< 或者 b

< 或者 b 用来锚定词首,其后面出现的内容必须作为单词首部出现才会匹配,现在让我们在regular.txt文件中找出词首是guo的行。 我们可以这么做。

正则表达式(一)---位置锚定

4
>或者 b 

>  或者 b (对,你没看错,b既能锚定词首 ,也能锚定词尾 )用来锚定词尾,其前面出现的内容必须作为单词尾部出现才会匹配,好了,现在让我们在regular.txt文件中找出词尾部是guo的行。 我们可以这么做。 

正则表达式(一)---位置锚定

5
B

B 是用来匹配非单词边界的,和b作用相反,什么意思了,还是用例子来说明一切吧。找出regular文件中 guo不出现在词尾的行,其实这中间包含两个条件:其一是匹配的行要包含guo;其二是guo不能出现在行尾

正则表达式(一)---位置锚定



总结

好了,今天主要讲了正则表达式中关于位置匹配相关的正则,后面还会总结正则表达式其它的规则。最后,我们一起来做两个小小的测试,看看大家是否已经完全理解了这篇文章的内容。看到下面的原始文件没,第5行是个空行,那么怎么把这行找出来了?第6行整行就是一个单词guo,又如何把这行找出来了?大家可以先思考下再看看下面的答案,如果有什么疑问,欢迎留言交流!


正则表达式(一)---位置锚定正则表达式(一)---位置锚定



推荐阅读:

【Linux命令】 grep命令基本用法




专注服务器后台技术栈知识总结分享

欢迎关注交流共同进步

正则表达式(一)---位置锚定