葫芦山下小葫芦

像孩子喜欢看葫芦兄弟那样,热爱IT!

导航

学以致用二十一-----正则表达式的一个误区,再引申开

正则表达式关于 ^ 和 $的描述

^  匹配输入字符串的开始位置

$ 匹配输入字符串的结尾位置

然后我想当然的认为 ^匹配一串字符串的开头,$匹配一串字符串的结尾了。具体这个误解如下

 

我想找到以 inet开头的字符串。

于是我通过grep来匹配        ifconfig  eno16777728 | grep ‘^inet’ 结果

结果为空,what? 不是说好的匹配开头吗?有什么地方不对呢。

原来是我一直理解错了。 ^ 输入字符串的开始位置,是从一行的起始位置匹配。空格也是一个字符

如:

有结果输出。以en开头的被匹配出来了。en是最开始的位置。 那为何inet 没有被匹配输出呢。原因是 inet前面有空格或者是制表符。因此是无法匹配到的。

可以通过另一个例子来试验

注意 第二行前面是有空格的

如果将t.txt第二行空格去掉

 

那在前面的例子中 ,我要匹配出inet该如何呢

使用\s 或者 \<

\s  匹配任何空白字符

\< 匹配单词

看执行结果

 

$ 则是行尾 如

那比如我要匹配下图中的1怎么办?

可使用 \> 匹配字符串结尾,然后分解步骤

1、先找到所以的1

2、 可以看到127.0.0.1那行有inet ,于是找到带inet的

3、过滤出带inet6的

4、因为最终是要找到1 ,把第3步骤两个过滤条件换一下

现在可以看到我想要的结果了

通过本次学习。掌握了几个知识点

^

$

\s

\<

\>

[^]  补充,不匹配中括号中的内容

 

posted on 2018-10-16 18:18  葫芦山下小葫芦  阅读(162)  评论(0编辑  收藏  举报