Существует несколько типов регулярных выражений, и набор специальных символов зависит от конкретного типа. Некоторые из них описаны ниже. Во всех случаях специальные символы экранируются обратной косой чертой \. Например, чтобы соответствовать [вы пишите \[вместо. В качестве альтернативы, символы (кроме ^) можно экранировать, заключив их в квадратные скобки один за другим, например [[].
Символы, которые являются специальными в некоторых контекстах, например ^специальные в начале (под) выражения, могут быть экранированы во всех контекстах.
Как писали другие: в оболочке, если вы не заключаете выражение между одинарными кавычками, вы должны дополнительно экранировать специальные символы для оболочки в уже экранированном регулярном выражении. Пример: вместо '\['вас можно написать \\[(альтернативно: "\["или "\\[") в Bourne-совместимых оболочках, таких как bash, но это уже другая история.
Основные регулярные выражения (BRE)
- POSIX: основные регулярные выражения
- : Команды
grep,sed
- Специальные символы:
.[\
- Особенный в некоторых контекстах:
*^$
- Избежать строки:
"$(printf '%s' "$string" | sed 's/[.[\*^$]/\\&/g')"
Расширенные регулярные выражения (ERE)
- POSIX: расширенные регулярные выражения
- Команды:,
grep -EGNU:, sed -r* BSD:sed -E
- Специальные символы:
.[\(
- Особенный в некоторых контекстах:
*^$)+?{|
- Избежать строки:
"$(printf '%s' "$string" | sed 's/[.[\*^$()+?{|]/\\&/g')"
bashвключено),!все еще развернутым в двойных кавычках, только одиночные кавычки будут останавливать его расширение (или отключать опцию оболочки).