一、正则表达式
正则表达式模式:贪婪模式、非贪婪模式
正则表达式包括:基本正则表达式、扩展正则表达式
1、基本正则表达式
^ | 锚定行首的内容,如:^pattern |
$ | 锚定行尾的内容,如:pattern$ |
^$ | 空白行 |
. | 匹配任意单个字符 |
* | 匹配其左边字符任意次 |
.* | 匹配任意长度的任意字符 |
[ ] | 匹配指定范围内的任意单个字符 |
[^] | 匹配指定范围外的任意单个字符 |
\? | 匹配其左边字符0次或1次 |
\{m,n\} | 匹配其左边字符至少m次,至多n次 |
\{m,\} | 匹配其左边字符至少m次 |
\{m\} | 匹配其左边字符精确m次 |
\< |
锚定词首,如:\<pattern |
\> | 锚定词尾,如:pattern\> |
\<\> | 锚定单词(并非真正意义上的英文单词),\<pattern\> |
\b | 字符边界符,与\<、\>功能类似,如:\bpattern\b (锚定单词) |
\(pattern\) | 分组,如:\(abc\).*\1 说明:此处1表达第1个分组 |
[:lower:] |
小写字母 |
[:upper:] | 大字字母 |
[:digit:] | 数字 |
[:alpha:] | 字母 |
[:alnum:] | 字母和数字 |
[:space:] | 空格 |
[:punct:] | 标符号(字母、数字、控制、空白符以外的字母) |
2、扩展正则表达式
+ | 重复一个或一个以上的前一个字符 |
? | 零个或一个前一个字符 |
| | 或,多选一 |
() | 分组 |
()+ | 重复一个或一个以上的前一个分组 |
{m,n} | 匹配其左边字符至少m次,至多n次 |
\<\> | 锚定单词 |
同时包括所有基本正则表达式,除\<、\>外,扩展正则表达式中不需要使用反斜线。
更多正则表达式使用可查看:man 7 regex
也可参考:http://www.cnblogs.com/lcf/articles/807523.html
二、grep 使用
grep 支持基本正则表达式
egrep 支持扩展正则表达式(相当于:grep -E)
fgrep 不支持模式匹配,但速度很快
命令:grep
作用:打印出与模式匹配的行
参数:
--color=auto | 匹配到的信息使用颜色标记,auto选项可省略 修改默认配色方案(前景色后景色):export GREP_COLOR='01;36' |
-v | 反射选取 |
-o | 只显示被模式匹配到的字符串 |
-i | 不区分字符大小写 |
-w | 匹配单词 |
-r | 递归查找 |
-A # | 显示所匹配到行,及其后面的#行 |
-B # | 显示所匹配到行,及其前面的#行 |
-C # | 显示所匹配到行,及其前后的#行 |
-E | 使用扩展正则表达式 |
三、举例:
匹配IP地址:
ifconfig |egrep --color "([1-9]|[1-9][0-9]|1[0-9]{1}|2[0-4][0-9]|25[0-5])\.(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){2}([1-9]|[1-9][0-9]|1[0-9]{1}|2[0-4][0-9]|25[0-5])"
四、注意事项
1、grep (基本正则)使用中,指示符必须加反斜线\,而egrep (扩展正则)中却不能加反斜线\:
grep --color "\(error\)" *
egrep --color "(error)" *
egrep --color "\<(error)" * (\<、\>:单词锚定除外)
原文链接:https://www.f2er.com/regex/362496.html