正则表达式:REGular EXPression
正则表达式:
basic REGEXP:基本
Extended REGEXP:扩展
元字符:
. 匹配任意单个字符
[] :匹配指定范围内的任意单个字符
[^]:匹配范围范围外的任意单个字符
[:digit:],[:lower:],[:upper:],[:punct:],[:space:],[:alpha:],[:alnum:],这只是字符集合
如果是范围内的任意单个字符[[digit]],好好理解一下
字符个数(贪婪模式:尽可能多的去匹配):
* 匹配其前面的字符0-n任意次
a*b a出现任意次后面跟着b
a.*b显示a打头的,b结尾的字符
.*任意长度的任意字符
\?匹配其前面的字符0次或者1次,记得转义\?
a?b有ab或者b的行就可以
\{m,n\} :匹配前面的那个字符至少m次,至多n次
{1,} :至少三次
{0,3}:0-3次
位置锚定:
^:锚定行首,此字符后面的字符必须出现在行首
$:锚定行尾,此字符前面的字符必须出现在行尾
^$:空白行
grep '^$' /etc/inittab | wc -l
\<或\b:其后面的任意字符必须作为单词首部出现
\>或\b:其后面的任意字符必须作为单词尾部出现
\<root\> :必须出现root这个单词
分组:
\(\)整体,后面可以使用字符再次使用后项引用
\(ab\)*ab整体出现0到n次
\1 :第一个左括号以及与之对应的右括号所包含的所有内容
grep '\(l..e\).*\1' test3.txt
扩展的正则表达式:不需要反斜杠进行转义
字符匹配:
.:匹配单个字符
[]:匹配括号里面的字符
[^]:匹配括号内以外的字符
次数匹配:
* : 任意次
? :0次或者一次
+ :其前至少一次 {1,}
{m,n}
位置锚定
^:行开头
$:行结尾
\<:单词头部
\>:单词尾部
分组
()
\1,\2,\3
或者
a|b两者有其一即可
C|cat匹配C或者cat
grep -E '(C|c)at'匹配Cat或cat