一个正则表达式是由普通字符和特殊字符组成的文字模式,将某个字符模式与所搜索的字符串进行匹配。简单的说,就是用来搜索匹配的一个很好的工具。
正则表达式分为:基本正则表达式和扩展正则表达式两类
基本正则表达式的元字符如下:
. :匹配任意单个字符
*:匹配前一个字符的任意次
.*:任意长度的任意字符
[]:指定范围内的任意单个字符
a\{m,n\}:a这个字符至少出现m次,最多出现n次
a\{m,\}:a这个字符至少出现m次,
a\{0,n\}:a这个字符最多出现n次
?:匹配前一个字符出现0次或1其次
锚定符:
^:锚定行首
$:锚定行尾
^$:锚定空白行
\<:锚定词首
\>:锚定词尾
引用:
\(\)
接下来给每个元字符配备一个例子
“
.
”
![](https://i-blog.csdnimg.cn/blog_migrate/0a8a2561b2cdde947531fc91162280e6.png)
上图“
. ”
匹配任意单个字符,root,r/ft中的o、/、f,都属于任意单个字符
“
*
”
![](https://i-blog.csdnimg.cn/blog_migrate/8de76bf545038cdcb58ddbd9cd607b88.png)
上图星号“
*
”匹配b任意次,也可以是0次,如图中的ac
“
.*
”
![](https://i-blog.csdnimg.cn/blog_migrate/09dad794554824fc2222fee45cc08c97.png)
上图是以r开头t结尾,中间是任意字符
第一行开头就是root,已经匹配完了,但是最后又以t结尾,这个称为贪婪模式,尽量匹配到最长
![](https://i-blog.csdnimg.cn/blog_migrate/affc93084b6784fd3ca6c1ecc69693bb.png)
上图表示以r开头以t结尾中间为任意小写字母
\{m,n\}
![](https://i-blog.csdnimg.cn/blog_migrate/d47bf1fb699e1970ed94cfda2d6927eb.png)
表示图上
b
至少显示
1
次,最多显示两次的行
\{m,\}
![](https://i-blog.csdnimg.cn/blog_migrate/bc4ebe9dcc0441d5c1ae8a9e8629bec5.png)
上图表示以r开头t结尾,中间的小写字母至少出现两次的行
\{0,n\}
![](https://i-blog.csdnimg.cn/blog_migrate/454b689e90b9ebc175d5e78eef9b3429.png)
表示b至少出现0次,最后出现2次的行
grep的选项
-v:
对结果去反
例:
![](https://i-blog.csdnimg.cn/blog_migrate/52f0abb5c003e198f2f280acc0f3cb96.png)
这个是空白至少出现1次的,图中红色标记都是空白
反之 -v :grep -v "[[:space:]]\{1,\}" /etc/passwd
锚定符:
^:
![](https://i-blog.csdnimg.cn/blog_migrate/3df9e858a3247d64b8ca6cf558a82ee6.png)
上图中显示以root开头的行
$:
![](https://i-blog.csdnimg.cn/blog_migrate/585a5e157dfffe38269004510e53ba3f.png)
显示以n结尾的行
^$:
![](https://i-blog.csdnimg.cn/blog_migrate/89782146dc0b7837efd8695d7e23f061.png)
显示空白行
\<:
![](https://i-blog.csdnimg.cn/blog_migrate/01be630ce05788d009a1676abe688674.png)
显示以r开头的单词
\>:
![](https://i-blog.csdnimg.cn/blog_migrate/8c6d16b4625e2f011f69200a1cba6c71.png)
显示以r结尾的单词
\(\):
![](https://i-blog.csdnimg.cn/blog_migrate/2842b9b037f619075ca504e086cd4c00.png)
上图a为文件 1用来匹配括号里的l..e
表示以l..e开头后面跟任意字符任意次,并且以r结尾的行
扩展正则表达式元字符:
( )
{}
+: 次数匹配,匹配其前的字符至少1次;
|:或者
注:使用扩展正则表达式格式必须为grep -E
或者egrep
( ):
![](https://i-blog.csdnimg.cn/blog_migrate/5c6c0a88b5ac194e1c07c3b95a836c73.png)
和正则表达式中的\(\)效果一样
{}:
![](https://i-blog.csdnimg.cn/blog_migrate/5895d7a207eec653109a851215499709.png)
和
\{m,\}
效果一样
+:
![](https://i-blog.csdnimg.cn/blog_migrate/a72a02606902a146655b7c79f242ffe8.png)
匹配b至少出现一次
|:
![](https://i-blog.csdnimg.cn/blog_migrate/f42ea4354fe1523d91416eaf7d8db4bc.png)
显示以d或D开头的dog
END
转载于:https://blog.51cto.com/blue3/920611