Мне известно, что шаблон [abc]
соответствует одному символу, который является либо a
, либо b
, либо c
в обычном выражения, но как мне сопоставить [
или ]
? Я не знаю, как правильно их избежать.
Шаблон для использования [][]
. Возьмите GNU grep
в качестве примера. Подойдут все следующие три.
grep '[][]' file
grep -P '[][]' file
grep -E '[][]' file
Объяснение:Выражение в квадратных скобках в регулярном выражении не может иметь пустое тело (Попробуйте grep '[]' file
и будет сообщено об ошибке ), поэтому первое [
фактически идет с последним ]
. [
внутри пары квадратных скобок не мешает, потому что скобочное выражение не может быть вложенным, поэтому, как только [
будет замечено, механизм RE будет искать первый ]
, начиная со 2-го символа после него, как закрывающий ]
. Внутри скобочного выражения только диапазоны[:class:]
[.coll.]
[=equiv=]
и c-c
вместе с ^
, который появляется в начале, обрабатываются особым образом, другие символы обрабатываются буквально без необходимости экранирования (, см. комментарий @dave _thompson _085 для ссылки на страницы справочника ).