Как сопоставить `[` или `]` (скобки) с регулярным выражением?

Мне известно, что шаблон [abc] соответствует одному символу, который является либо a, либо b, либо c в обычном выражения, но как мне сопоставить [ или ]? Я не знаю, как правильно их избежать.

0
02.05.2019, 07:23
1 ответ

Шаблон для использования [][]. Возьмите GNU grepв качестве примера. Подойдут все следующие три.

grep '[][]' file
grep -P '[][]' file
grep -E '[][]' file

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

0
28.01.2020, 03:45

Теги

Похожие вопросы