2011-01-31 94 views

回答

6

這是一種正則表達式式的字符匹配語法;從Bash Reference Manual§3.5.8.1 (Pattern Matching)

[...] 匹配封閉字符中的任何一個。用連字符分隔的一對字符表示範圍表達式;任何使用當前語言環境的整理順序和字符集在這兩個字符之間進行排序的字符(包括這兩個字符)將進行匹配。如果‘[’之後的第一個字符是‘!’‘^’,則不匹配任何未包圍的字符。 A ‘−’可以通過將其包括爲集合中的第一個或最後一個字符來匹配。 A ‘]’可以通過將它包括爲集合中的第一個字符來匹配。範圍表達式中字符的排序順序由當前語言環境和shell變量的值(如果已設置)確定。

例如,在默認的C語言環境中,‘[a-dx-z]’等同於'[abcdxyz]'。許多區域設置按字典順序對字符進行排序,在這些區域‘[a-dx-z]’通常不等同於‘[abcdxyz]’;例如,它可能相當於‘[aBbCcDdxXyYz]’。要獲得括號表達式中範圍的傳統解釋,可以通過將LC_COLLATELC_ALL環境變量設置爲值‘C’來強制使用C語言環境。

  alnum alpha ascii blank cntrl digit graph lower 
      print punct space upper word xdigit 

字符類匹配:

‘[’‘]’,字符類可以使用語法[:class:],其中類是在POSIX標準中定義的下列類的一個來指定任何屬於該類的字符。單詞字符類匹配字母,數字和字符‘_’

‘[’‘]’,一個等價類可以使用語法[=c=],它匹配具有相同的排序規則重量的所有字符(如由當前區域中定義)作爲字符c指定。

‘[’‘]’之內,語法[.symbol.]與整理符號符號相匹配。

(強調增加了最常見的使用模式)

5

它在本教程中用於討論除了globbing以外的正則表達式('*''?')。例如[a-z]正則表達式將匹配一個小寫字符。

1

其實,什麼是通配符是[abc]例如。它匹配三個字母之一。