linux shell 用一串字符作为表达式向内核传递意思, 正则表达式用元字符和普通字符组成的字符串来查询和操作字符串,其中元字符是描述字符的字符
基本正则表达式元字符集合和意义
* 0个或者多个在*字符之前的那个普通字符
. 匹配任意字符
^ 匹配行首,或后面字符的非
$ 匹配行尾
[] 匹配字符集合
\ 转义符,屏蔽一个元字符的特殊意义
\<\> 精确匹配符号
\{n\} 匹配前面字符出现n次
\{n,\} 匹配前面字符至少出现n次
\{n,m\} 匹配前面字符出现n~m次
*字符用于匹配前面一个普通字符的0次或多次重复
例如:hel*o 前面字符是l,*就匹配l出现0次或者多次的文件,比如 helo--没有出现,helllllll0--多次
. 符号比较好理解,匹配任意字符,空格也可以
^符号用于匹配行首,表示行首的字符是^字符后面的那个字符
例如,^hello,表示匹配以hello开始的一行
$字符匹配行尾,表示行尾的字符是$前面的字符
比如:hello$,匹配所有以hello结尾的行
匹配空行的表达式为 ^$
[] 符号--->>里面放入需要匹配的字符集合,可以加入-
比如:[0-9]匹配0~9中任意一个数字[a-z] [A-Z]
^符号如果放入[]内表示的是取反
例如:[^c-f] 表示的是:匹配c-f之外的字符.数字.和空格
[A-Za-z][a-zA-Z]* 表示匹配任意英文单词
\ 转义符号,用于屏蔽一个元字符的特殊意义,让它回归本来的意义
\<\> 符号是精确匹配符号
\<the\> 精确匹配 the 这个单词,而不匹配 them there another 等等
\{n\} 系列符号和* 符号类似,都是表示前一个字符的重复,但是*表示0或者多次,而\{n\}系列可以指定重复次数
例如: feihu\{3\}a ===>> 只能匹配到feihuuua
feihu\{3,\}a ===>> 可以匹配到feihuuua feihuuuua feihu..........a
feihu\{3,8\}a ===>> 最少3次,最多8次, 少于或者大于都不满足
[a-z]\{5\} ==>> 精确匹配5个小写字母