Итак, [^x]
означает, что не соответствует "x", а x*
означает совпадение "x" 0 или более раз, но что означает [^*]
?
Что означает [^ *]?
Ответ 1
Это означает, что "соответствует символу, который не является буквальным символом звездочки".
Следует иметь в виду, что метасимволы класса символов не должны быть экранированы, поэтому [^*]
совпадает с [^\*]
. Аналогично, вы можете использовать [.]
для ссылки на литеральную точку, а не на метасимвол, относящийся к любому символу. Вне класса символов вам нужно будет сбежать от него: \.
.
Ответ 2
Это означает одно появление символа, который не является фактическим символом *
. Не требуется escape-символ, потому что звездочка не имеет особого значения внутри класса символов. Это не должно быть удивительно, так как символ carat ^
также имеет совершенно иное значение внутри класса символов.
Ответ 3
*
не имеет особого значения внутри класса символов , поэтому он означает буквально "нечто, что не *
". Единственными символами, которые имеют особое значение внутри классов символов, являются -
, ^
и ]
. Кроме этого все воспринимается буквально. Например, [^.]
означает "нечто, что не .
", так же как [^$]
означает "что-то, что не $
".
Ответ 4
Поисковая система symbolhound - хорошая ставка для поиска символа, подобного этому. Вот результаты для [^ *]:
[раскрытие: о команде SH]