[^][…]
- это не два класса символов, а только один класс символов, содержащий любой другой символ, кроме ]
, [
и …
(см. Специальные символы внутри класса символов в скобках ):
Однако, если ]
является первым (или вторым, если первый символ является символом каретки) класса символов в квадратных скобках, он не обозначает конец класса (как вы не может иметь пустой класс) и считается частью набора символов, которые могут быть сопоставлены без экранирования.
Примеры:
"+" =~ /[+?*]/ # Match, "+" in a character class is not special.
"\cH" =~ /[\b]/ # Match, \b inside in a character class
# is equivalent to a backspace.
"]" =~ /[][]/ # Match, as the character class contains.
# both [ and ].
"[]" =~ /[[]]/ # Match, the pattern contains a character class
# containing just ], and the character class is
# followed by a ].