Взять, к примеру, эту команду:
find . -regex ".*\.\(cpp\|h\)"
Это найдет все файлы .h и .cpp в вашем каталоге. Символ периода '.' в регулярных выражениях обычно означает «любой символ». Чтобы он соответствовал только фактическому периоду, вы должны экранировать его, используя символ обратной косой черты '\'.
В этом случае, если у персонажа есть особое значение, вы должны экранировать его, чтобы получить реальный символ, который он представляет.
Теперь возьмите скобки и строку «или», являясь символами '(', ')' и '|' соответственно. Они также имеют специальные значения, используемые для группировки регулярных выражений. Однако, чтобы получить особое значение, символы должны быть экранированы с помощью обратной косой черты! Без обратной косой черты символы имеют значение фактического символа, который он представляет.
Почему это "." трактуется иначе, чем '(', ')' и '|'?
источник