glob模式

来源:互联网 发布:ipad 电容笔 知乎 编辑:程序博客网 时间:2024/06/03 00:11

在学习gulp的过程中,gulp使用了被称作为glob的文件匹配模式。

接下来我们认识下什么是glob模式。

在计算机编程中,特别是类Unix环境,glob模式通过通配符来匹配文件名。例如:Unix命令,将所有以扩展名为.txt的文件从当前目录拷贝到textfiles目录。

这里【*】是一个匹配任意数量字符基本通配符,*.txt就表示一个glob模式。另一个通用的通配符是【?】,它表示任意一个字符。

最常用的通配符是 *,?,[…]:

通配符描述例子匹配不匹配*匹配任意数量的字符包括空字符Law*Law, Laws, or Lawyer *Law*Law, GrokLaw, or Lawyer. ?匹配任意一个字符?atCat, cat, Bat or batat[abc]匹配任意一个包含的字符[CB]atCat or Batcat or bat[a-z]匹配任意一个给定范围的字符Letter[0-9]Letter0, Letter1 etc.Letters or Letter

注意,在所有以上例子中路径分隔符(unix的/,windows的\)都不会被匹配。

在Linux和POSIX系统中[…]有以下两个扩展:

通配符描述例子匹配不匹配[!abc]不匹配任意一个包含的字符[!C]atBat, bat, or catCat[!a-z]不匹配任意一个给定范围的字符Letter[!3-5]Letter1, Letter2 etc.Letter3, Letter4 or Letter5

与正则的比较:

Glob的通配符等价正则的表达式?.*.*

Glob尝试匹配整个字符串(例如,S*.DOC将匹配S.DOC和SA.DOC,但不匹配POST.DOC或SURREY.DOCKS),正则只匹配子串除非使用^和$。所以S*.DOC的等价正则是^S.*\.DOC$。

node glob对常用通配符又做了一些扩展:

通配符描述例子匹配不匹配**匹配任意数量的字符包括空字符(包括路径分隔符)**/*.js/a/b/c.js !(pattern|pattern)匹配除了()内以外的pattern!(abc|bcd)aaa,bbbabc.bcd?(pattern|pattern)匹配至多一个()内的pattern?(abc|bcd)abcbbb+(pattern|pattern)匹配至少一个()内的pattern+(abc|bcd)abcbbb*(pattern|pattern)匹配任意个()内的pattern*(abc|bcd)abcbbb@(pattern|pattern)精确匹配()内的其中一个pattern@(abc|bcd)abcabd

 

原创文章,转载请注明: 转载自xdlysk的博客

本文链接地址: glob模式

0 0
原创粉丝点击