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