字元類別(方括號)
左方括號開始一個字元類別的描述,並以方中括號結束。 單獨的一個右方括號沒有特殊意義。如果一個右方括號需要作為一個字元類別中的成員, 那麼可以將它寫在字元類別的首字元處(如果使用了^取反, 那麼是第二個)或者使用轉義符。
一個字元類別在目標字串中匹配一個單獨的字元; 該字元必須是字元類別中定義的字元集合的其中一個, 除非使用了 ^ 對字元類別取反。 如果^需要作為一個字符類的成員,確保它不是該字符類的首字符, 或對其進行轉義即可。
例如,字符類[aeiou]匹配所有的小寫元音字母, 而[^aeiou]匹配所有非元音字母的字符。注意: ^只是一個透過枚舉指定那些不存在字元類別之中的字元的便利符號。而不是斷言, 它仍然會從目標字串中消耗一個字符,並且如果當前匹配點在目標字串末尾, 匹配將會失敗。
當大小寫無關匹配被設定後,任意字元類別都同時代表大小寫兩種版本,因此對於例子, 一個大小寫不敏感的[aeiou]同時匹配"A"和"a", 並且大小寫不敏感的[^aeiou]同時不匹配"A"。
換行符在字元類別中沒有任何特殊涵義, 與 PCRE_DOTALL 或 PCRE_MULTILINE 選項無關。 一個字元類別例如 [^a] 始終會匹配換行符。
在字元類別中,一個中劃線(減號 -)可以用來指定從一個字元到另一個字元的範圍。 例如,[d-m]匹配d到m之間的所有字符,這個集合時閉合的。 如果中劃線本身要在一個字元類別中描述, 它必須被轉移或出現在一個不會被解釋為一個範圍的位置, 典型的例如字元類別開始或結束位置。
在一個字元範圍描述後面不能使用右中括號。 例如一個模式 [W-]46] 被解釋為一個包含 W 和 - 的字符類,後面緊跟字符串 ”46]”, 因此它可以匹配 ”W46]” 或 ”-46]”。然而, 如果中括號是經過轉義的, 它將被解釋為範圍的終點, 因此[W-]46] 就會被解釋為一個單獨的包含W 至] 範圍內所有字符以及4、6 的字符類。 8 進位或 16 進位描述的中括號同樣可以用來作為範圍的終點。
範圍操作以 ASCII 整理排序。它們可以用於為字元指定數值,例如 [