Ответ 1
[^][…]
- это не два символьных класса, а только один класс символов, содержащий любой другой символ, кроме ]
, [
и …
(см. Специальные символы внутри скобочного символьного класса):
Однако, если
]
является первым (или вторым, если первый символ является символом каретки) символьного символьного класса, он не обозначает конец класса (поскольку у вас не может быть пустой класс) и считается частью набора символов, которые могут быть сопоставлены без экранирования.Примеры:
"+" =~ /[+?*]/ # 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 ].