我们在连续匹配中提到:用“.”来表示任意字符。如下所示:
如上,我们发现“a aa”被匹配了,因为“.”不仅可以匹配字符,还能匹配空格,后面“ab a”被匹配到也是同理。
如果我们想要只单单匹配到字母,可以用[[:alpha:]]
- [[:alpha:]] & [[:lower:]] & [[:upper:]] 可分表表示 任意字母,任意小写字母和任意大写字母。
- []用来表示指定范围内的任意单个字符,如下所示,”abc1“中被匹配到的只有"ab",[bcd1]表示只能匹配到一个位置。
- [^ ]表示不能是方括号里面的任意字符。如下例:
注意:”^“的定义为锚定行首,但是与"[ ]"结合在一起的时候,只能把[^]当作一个整体去看,如果^在[]外侧,如^[abc]则表示匹配项肯定以abc中的某一个字符为开头,例如下:
- \d等简写,”\d“表示任意数字,但是grep没法识别这种简短格式,所以下图中没有匹配到结果。为了让grep能识别这种简短格式,使用”-P“选项,表示grep使用兼容perl的正则表达式引擎,结果如下:
总结:
- [[:alpha:]],[a-zA-Z]表示任意大小写字母;
- [[:lower:]],[a-z]表示任意小写字母;
- [[:upper:]],[A-Z]表示任意大写字母;
- [[:digit:]]表示0-9之间的任意单个数字,
- [[:alnum:]]表示任意数字或者字母;
- [[:space:]]表示任意空白字符,包括“空白”,”tab“,
- [[:punct:]]表示任意标点符号。
- ”[ ]“表示匹配指定范围内的任意单个字符。
- ”[^ ]“表示不能是方括号里面的任意字符。
- #简短格式并非所有正则表达式解析器都可以识别
- \d表示任意单个0-9的数字
- \D表示任意单个非数字字符
- \t表示匹配单个横向制表符(相当于一个tab键)
- \s表示匹配单个空白字符,包括”空格“,”tab制表符“等
- \S表示匹配单个非空白字符。
参考:http://www.zsythink.net/archives/1921