正则表达式关于 ^ 和 $的描述
^ 匹配输入字符串的开始位置
$ 匹配输入字符串的结尾位置
然后我想当然的认为 ^匹配一串字符串的开头,$匹配一串字符串的结尾了。具体这个误解如下
我想找到以 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
<
>
[^] 补充,不匹配中括号中的内容