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