基础正则表达式
* 前一个字符匹配0次或任意多次
. 匹配除了换行符以外任意一个字符。
^ 匹配行首,例如^hello会匹配以hello开头的行
$ 匹配行尾,例如hello$会匹配以hello结尾的行
[] 匹配括号中的任意一个字符,只匹配一个字符
[0-9]匹配任意一位数字,[a-z][0-9]匹配小写字母和一位数字构成的两位字符
[^] 匹配括号以外的任意字符,[^0-9]匹配任意一位非数字字符
转义符,用于取消将特殊符号的含义取消
{n} 表示前面的字符恰好出现n次
[0-9]{4}匹配4位数字
{n,} 表示前面的字符出现不小于n次,[0-9]{2,}表示两位及以上的数字
{n,m} 表示其前面的字符至少出现n次,最多出现m次,[a-z]{6,8}匹配6到8位小写字母
测试注意
"*" 前一个字符匹配0次,或任意多次
a* #匹配所有内容,包括空白行
aa* #匹配至少包含有一个a的行
aaa* #匹配至少包含两个连续a的字符串
aaaaa* #匹配至少包含四个连续a的字符串
"."匹配换行符以外任意一个字符
"s..d" 匹配在s和d两个字母之间一定有两个字符的单次
"s.*d" 匹配在s和d两个字母之间有任意字符
".*" 匹配所有内容
^ 匹配行首, $匹配行尾
^M 匹配大写M开头的行
n$ 匹配以小写n结尾的行
^$ 会匹配空白行
[] 匹配中括号中指定的任意一个字符,只匹配字符
"s[ao]id" 匹配s和i字母中,要不是a,要不是o
"[0-9]" 匹配任意一个数字
"^[a-z]" 匹配用小写字母开头的行
[^] 匹配除中括号的字符以外的任意一个字符
"^[^a-z]" 匹配不用小写字母开头的行
"^[^a-zA-Z]" 匹配不用字母开头的行
正则表达式和通配符区别
正则表达式用来做字符串的模式分割,匹配,查找以及替换操作
正则表达式与通配符
>
正则表达式用来在文件匹配符合条件的字符串,正则是包含匹配
grep,awk,sed等命名可以支持正则表达式
>
通配符用来匹配符合条件的文件名,通配符是完全匹配
ls,find,cd 这些命名不支持正则表达式,所以只能使用shell自己的通配符进行匹配
通配符
'*' 匹配任意内容
'?' 匹配任意一个内容
'[]' 匹配括号中的任意一个字符