0,方括号表达式
方括号表达式用于表达一个字符集合(a list of characters),熟悉Python的同学会很容易接受[]表示一个list,但是一个方括号表达式匹配的是集合内的一个字符,不是多个字符。栗子:
[123]匹配1或者2或者3
[0-9]匹配任意一个单位阿拉伯数字
如果方括号表达式里第一个字符是^(大键盘数字6上方的符号),表示集合的补集,即任意不属于该集合的字符。栗子:
[^456]匹配1,匹配b,不能匹配4
1,预定义字符集
是定义好的几个方括号表达式,因为它们很常用,所以预定义好了,它们的特点:
1,一对冒号夹着一个单词,2,自解释,望文知意
有下面这些:
[:alnum:]: [0-9a-zA-Z]
[:alpha:]: [a-zA-Z]
[:cntrl:]: [\000-\037\177]
[:punct:]: [`~!@#$%^&*()-_=+[]{}\|;:'",<.>/?](注意,未加转义)
[:digit:]: [0-9]
[:graph:]: [[:alnum:][:punct:]]
[:lower:]: [a-z]
[:print:]: [[:alnum:][:punct:][:space:]]
[:space:]: [\w\t]
[:upper:]: [A-Z]
[:xdigit:]: [0-9a-fA-F]
下面是测试:创建一个文件内容如下,名为test:
ABCDEFGabcdefg~!@#$%^空格tab回车
在终端里输入命令测试,截图如下:
最后注意,预定义字符集也可以用^,取补集:栗子,还是截图中的文件,这次匹配非alnum任意字符
h@h-VirtualBox:~$ grep [^[:alnum:]] test
~!@#$%^