【现学现忘&Shell编程】— 25.基础正则表达式

1、正则表达式说明

正则表达式和通配符的区别

  • 正则表达式用来在文件中匹配符合条件的字符串。
  • 通配符用来匹配符合条件的文件名。

在Shell中,使用在文件当中搜索字符串的命令,如grepawksed等命令(文本操作三剑客),可以支持正则表达式。

而在系统当中搜索文件的命令,如lsfindcp这些命令不支持正则表达式,所以只能使用通配符来进行匹配了。

  • 在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建议把正则表达式分成基础正则和扩展正则两种。

你可能感兴趣的:(【现学现忘&Shell编程】— 25.基础正则表达式)