正则表达式
1、 正则表达式基础
'*' 匹配多个字符 如:hel*o # hello, helo, hellllo
'.' 匹配一个字符 如:...73. # '.' 也可匹配 ' ',第4/5个字符为73,其它为任意字符
'^' 用于匹配行首,表示行首的字符是 '^' 字符后面的那个字符
'$' 用于匹配行尾,该符号放在匹配字符之后,与 '^' 的功能与用法相反
'^$' 为空行的表示方法
[0123456789] # 穷举了阿拉伯数字
[0-9] # 表示数字范围
匹配字母:
[a-z] # 所有小写字母
[b-p] # 小写字母 b~p
[^b-d] # 匹配不在 b~d 范围之内的所有字符
[A-Za-z]* # 匹配所有的英文单词
\ 转义字符,用于屏蔽一个元字符的特殊意义
\<the\> # 精确匹配 the 这个单词,而不匹配包含 the 字符的单词,如 them/another/there
\{\}
\{n\}: 匹配前面字符出现 n 次
\{n,\}: 匹配前面字符至少出现 n 次
\{n,m\}: 匹配前面字符出现 n~m 次
例:
JO\{3\}B # 重复字符O 3次,匹配值为:JOOOB
JO\{3,\}B # 重复字符O至少3次,匹配值为:JOOOB、JOOOOB、JOOOOOOOOB
JO\{3,6\}B # 重复字符O至少3次,至多六次,匹配值为:JOOOB、……、JOOOOOOB
[a-z]\{5\} # 精确匹配5个小写字母,如:hello、house等
正则表达式的扩展
? 如:JO?B # 匹配O字符0次或1次 JOB或JOOB
+ 如:S+EU # 匹配1次或N次 SSEU/SSSEU/SSSSSSSEU
通配globbing — ? 、 * 、 [] 、 {} 、 ^
[mjroot@localhost test]$ ls
abck ek.sed kd.awk k.k lka.aas sd234 sk.y ss.x
wioo.zk b.rs ew kk kke3.wsk s.a sd.awk
s.r s.w s4.awk su9i.z 1.awk ww.b
[mjroot@localhost test]$ ls [a-z]*.[^awk]
sk.y s.r ss.x su9i.z ww.b
[mjroot@localhost test]$ ls [a-z]*.[^awk]*
b.rs ek.sed sk.y s.r ss.x wioo.zk su9i.z ww.b
ls [a-z]*.[^awk] 显示以英文字符开头,并不包含以a、w、k的字符为后缀名的文件 —- 单个字符
ls [a-z]*.[^awk]* 功能同上,且不以 awk 为后缀名的文件 —- 单个字符+整个字符串
这解释有点怪怪的,自己结合代码段里理解吧! ╭(╯^╰)╮