正则表达式:Regular Expression
是文本过滤工具,能够实现根据指定的"模式(Pattern)"逐行搜索文件内容,并将匹配到得行显示出来。
“模式”: 是由正则表达式的元字符、其他字符组成的匹配条件
正则表达式分为:
基本正则表达式: Basic RE
扩展的正则表达式:Extended RE
扩展的正则表达式:Extended RE
(一)基本正则表达式:
基本正则表达式元字符:
字符匹配:
.: 表示匹配任意单个字符
[ ]: 匹配指定范围内的任意单个字符
[^]: 匹配指定范围外的字符 ,意为取反
.: 表示匹配任意单个字符
[ ]: 匹配指定范围内的任意单个字符
[^]: 匹配指定范围外的字符 ,意为取反
个数匹配:
*:匹配其前的字符0,1,或多次;
*:匹配其前的字符0,1,或多次;
如 ab*,诸如a, ab, abbbbbbbbbbbbb都匹配,也就是a后面的b的个数可以出0次,1次,或更多
注意: *仅仅指次数,不表示字符
次数匹配:贪婪模式,能匹配多长就匹配多长
a.*b 它将会匹配 最长的以a开始,以b结束的字符串
?:匹配其前的字符0或1次:
ab?c, ac,abc
ab?c, ac,abc
*? :重复任意次,
\{m,n\}: 大于m,小于n
\{m,\}: 至少m次
\{0,m\}: 至多m次
\{m\}: m次
\{0,m\}: 至多m次
\{m\}: m次
锚定符:
单词锚定:
\<: 锚定词首; \<r..t; root
\>: 锚定词尾; root\>
单词锚定:
\<: 锚定词首; \<r..t; root
\>: 锚定词尾; root\>
行首锚定:
^: ^root
^: ^root
行尾锚定:
$: root$
root[[:punct:]]?$或root[[:punct:]]\{0,1\}$
^[[:space:]]*root
$: root$
root[[:punct:]]?$或root[[:punct:]]\{0,1\}$
^[[:space:]]*root
分组:(也叫子表达式)
\(\), x\(ab\)*y
\(\), x\(ab\)*y
后向引用:
\1:一次
\2:二次
\3:三次
\2:二次
\3:三次
# grep --color=auto 'cpu' /proc/cpuinfo 高亮显示匹配字符基本
[:SPAEC:] 空格键
^: 表示取反
(二)扩展的正则表达式:
与基本正则表达式大部分用法一致,但有部分用法精简和扩展:
下面主要说明二者的不同点:
1、用法差异:
在扩展表达式中, 个数不再需要反斜线
{m,n}: 至少m次,最多n次
{m}: m次
分组:不需要加反斜线
( ): x(ab)*y
( ): x(ab)*y
2、扩展用法:
+: 至少一次(重复一次或多次)
或者符:两者选一的 (分支条件)
|:
|:
a|b, abc| abc|def, ab(c|d)ef
另:
fgrep: 不解析正则表达式,直接搜索结果
转载于:https://blog.51cto.com/51880526/1008516