Как отмечали другие, ^
означает отрицание только в том случае, если это первый символ в наборе.
Конструкция, такая как [ABC^DEF]
, для выражения A, B или C, но не DEF неимеет смысл.Если это A, B или C, это не может быть D, E или F, поэтому часть выражения является избыточной.Если у вас есть символы, существующие в обоих блоках, вы можете упростить это: [this^notthat] => [is]
, удалив любой символ в части "this", который также существует в части "that".
При работе с более крупными последовательностями вещи могутбыть немного более запутанным.