1、正则表达式说明
正则表达式和通配符的区别
- 正则表达式用来在文件中匹配符合条件的字符串。
- 通配符用来匹配符合条件的文件名。
在Shell中,使用在文件当中搜索字符串的命令,如grep
,awk
,sed
等命令(文本操作三剑客),可以支持正则表达式。
而在系统当中搜索文件的命令,如ls
,find
,cp
这些命令不支持正则表达式,所以只能使用通配符来进行匹配了。
- 在Shell中只要是匹配字符串,都适用于正则匹配。
- 正则表达式匹配的是以一行为单位进行包含匹配的,匹配上就显示输出该行文本,否则不显示。
2、基础正则表达式
元字符 | 作用 |
---|---|
* |
匹配前一个字符匹配0次或任意多次。 |
. |
匹配除了换行符外任意一个字符。 |
^ |
匹配行首。例如:^hello 会匹配以hello 开头的行。 |
$ |
匹配行尾。例如:hello$ 会匹配以hello 结尾的行。 |
[] |
匹配中括号中指定的任意一个字符,只匹配一个字符。 例如: [aoeiu] 匹配意一个元音字母,[0-9] 匹配任意一位数字,[a-z][0-9] 匹配小写字和一位数字构成的两位字符。 |
[^] |
匹配除中括号的字符以外的任意一个字符。 例如: [^0-9] 匹配任意一位非数字字符,[^a-z] 表示任意一位非小写字母。 |
\ |
转义符。用于取消将特殊符号的含义取消。 |
\{n\} |
表示其前面的字符恰好出现n次。 例如: [0-9]\{4\} 匹配4位数字,[1][3-8][0-9]\{9\} 匹配手机号码。 |
\{n,\} |
表示其前面的字符出现不小于n次。 例如: [0-9]\{2,\} 表示两位及以上的数字。 |
\{n,m\} |
表示其前面的字符至少出现n次,最多出现m次。 例如: [a-z]\{6,8\} 匹配6到8位的小写字母。 |
注意:Shell语言不是一个标准的完整语言,在其他语言中的正则表达式中,是不分基础正则和扩展正则的。而Shell认为你不需要拿正则写太过复杂的字符串筛选格式,所以Shell建议把正则表达式分成基础正则和扩展正则两种。
网友评论