码迷,mamicode.com
首页 > 其他好文 > 详细

globbing、ERE、BRE的比较

时间:2016-07-29 19:20:57      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:linux   表达式   通配符   资源   

  在linux中,对资源进行选择的时候,通常都会使用到通配符(globbing)、基本正则表达式(Basic Regular Expression)或者扩展正则表达式(Extend Regular Expression),大家肯定都疑惑过,它们在使用时,为什么相同的元字符会表示不同的含义呢?答案其实很简单,在bash环境下是不支持正则表达式的,也就是说那些* + .等之类的都是通配符,而真正支持正则表达式的是grep、sed和awk这些工具。所以在我理解看来,它们貌似一样,都是用来匹配字符的。但在文本处理中,都是用正则表达式,比如像awk,sed,是针对文件的内容的;而通配符多用在bash环境下的find,ls,cp等命令中,是用来查找文件名的。

  以下是自己总结的三者元字符的区别,空格表示此处无意义

分类

符号

globbing

BRE

ERE

字符匹配

.


单个字符

单个字符

字符匹配

?

单个字符



字符匹配

*

匹配任意长度字符

其前面的字符任意次

其前面的字符任意次

字符匹配

.*


任意长度字符

任意长度字符

字符匹配

[]

指定范围内任意字符

指定范围内任意字符

指定范围内任意字符

字符匹配

[^] 

指定范围外任意字符

指定范围外任意字符

指定范围外任意字符

字符匹配

[0-9]

任意一个数字

任意一个数字

任意一个数字

字符匹配

[a-z]

任意一个小写字母

任意一个小写字母

任意一个小写字母

字符匹配

[A-Z]

任意一个大写字母

任意一个大写字母

任意一个大写字母

字符匹配

[:digit:]

任意一个数字

任意一个数字

任意一个数字

字符匹配

[:lower:]

任意一个小写字母

任意一个小写字母

任意一个小写字母

字符匹配

[:upper:]

任意一个大写字母

任意一个大写字母

任意一个大写字母

字符匹配

[:alpha:]

任意一个字母

任意一个字母

任意一个字母

字符匹配

[:alnum:]

任意一个字母或数字

任意一个字母或数字

任意一个字母或数字

字符匹配

[:space:]

一个空格符

一个空格符

一个空格符

字符匹配

[:punct:]

一个标点符号

一个标点符号

一个标点符号

位置锚定

^

锚定行首

锚定行首


位置锚定

$

锚定行尾

锚定行尾


位置锚定

\<

锚定词首

锚定词首


位置锚定

\>

锚定词尾

锚定词尾


次数匹配

\??

前面的字符0次或1

前面的字符0次或1


次数匹配

\++

前面的字符至少1

前面的字符至少1


次数匹配

\{m\}

m次,格式\{m\}

m次,格式{m}


次数匹配


至少m次,格式\{m,\}

至少m次,格式{m}


次数匹配


至多n次,格式\{0,n\}

至多n次,格式{0,n}


次数匹配


m次到n次,格式\{m,n\}

m次到n次,格式{m,n}


分组引用


\1\2分组,格式\(\)

\1\2分组,格式()


  





本文出自 “dmwing” 博客,转载请与作者联系!

globbing、ERE、BRE的比较

标签:linux   表达式   通配符   资源   

原文地址:http://dmwing.blog.51cto.com/11607397/1831777

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!