glob模式


學習gulp的過程中,gulp使用了被稱作為glob的文件匹配模式。

接下來我們認識下什么是glob模式。

在計算機編程中,特別是類Unix環境,glob模式通過通配符來匹配文件名。例如:Unix命令,將所有以擴展名為.txt的文件從當前目錄拷貝到textfiles目錄。

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

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

通配符 描述 例子 匹配 不匹配
* 匹配任意數量的字符包括空字符 Law* Law, Laws, or Lawyer  
*Law* Law, GrokLaw, or Lawyer.  
? 匹配任意一個字符 ?at Cat, cat, Bat or bat at
[abc] 匹配任意一個包含的字符 [CB]at Cat or Bat cat or bat
[a-z] 匹配任意一個給定范圍的字符 Letter[0-9] Letter0, Letter1 etc. Letters or Letter

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

在Linux和POSIX系統中[…]有以下兩個擴展:

通配符 描述 例子 匹配 不匹配
[!abc] 不匹配任意一個包含的字符 [!C]at Bat, bat, or cat Cat
[!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,bbb abc.bcd
?(pattern|pattern) 匹配至多一個()內的pattern ?(abc|bcd) abc bbb
+(pattern|pattern) 匹配至少一個()內的pattern +(abc|bcd) abc bbb
*(pattern|pattern) 匹配任意個()內的pattern *(abc|bcd) abc bbb
@(pattern|pattern) 精確匹配()內的其中一個pattern @(abc|bcd) abc abd

 

原創文章,轉載請注明: 轉載自xdlysk的博客

本文鏈接地址: glob模式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM