Метасимволы в программировании: значение и экранирование.
Metacharacter
Метасимволы в программировании: что это такое и зачем их экранировать? Список из 14 специальных символов в регулярных выражениях (regex) и примеры использования.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Символ, имеющий особое значение для компьютерной программы.
Character that has a special meaning to a computer program
Метасимвол — это символ, имеющий особое значение для компьютерной программы, например, интерпретатора командной строки или движка регулярных выражений (regex). В расширенных регулярных выражениях POSIX существует 14 метасимволов, которые необходимо экранировать (предварять обратной косой чертой (\)) для подавления их специального значения и интерпретации как литеральных символов внутри выражения: открывающие и закрывающие квадратные скобки ([ и ]); обратная косая черта (\); символ карет (^); знак доллара ($); точка (.) ; вертикальная черта/пайп (|); вопросительный знак (?); звездочка (*); знаки плюс и минус (+ и -); открывающие и закрывающие фигурные скобки ({ и }); и открывающие и закрывающие круглые скобки (( и )). Например, чтобы сопоставить арифметическое выражение (1+1)*3=6 с помощью regex, правильный regex будет \(1\+1\)\*3=6; в противном случае, круглые скобки, знак плюс и звездочка будут интерпретированы как специальные символы.
A metacharacter is a character that has a special meaning to a computer program, such as a shell interpreter or a regular expression (regex) engine. In POSIX extended regular expressions, there are 14 metacharacters that must be escaped (preceded by a backslash (\)) in order to drop their special meaning and be treated literally inside an expression: opening and closing square brackets ([ and ]); backslash (\); caret (^); dollar sign ($); period/full stop/dot (. ); vertical bar/pipe symbol (|); question mark (? ); asterisk (*); plus and minus signs (+ and ); opening and closing curly brackets/braces ({ and }); and opening and closing parentheses (( and )). For example, to match the arithmetic expression (1+1)*3=6 with a regex, the correct regex is \(1\+1\)\*3=6; otherwise, the parentheses, plus sign, and asterisk will have special meanings.
Другие примеры
Некоторые другие символы могут иметь особое значение в определенных средах. В некоторых Unix-оболочках точка с запятой (";") является разделителем команд. В XML и HTML амперсанд ("&") обозначает HTML-сущность. Он также имеет особое значение в командной строке MS DOS/Windows. В некоторых Unix-оболочках и командной строке MS DOS/Windows символы меньше и больше ("<" и ">") используются для перенаправления, а обратная кавычка/гравис ("`") – для подстановки команд. В SQL знак процента используется как подстановочный символ.
Some other characters may have special meaning in some environments. In some Unix shells the semicolon (";") is a statement separator. In XML and HTML, the ampersand ("&") introduces an HTML entity. It also has special meaning in MS DOS/Windows Command Prompt. In some Unix shells and MS DOS/Windows Command Prompt, the less than sign and greater than sign ("<" and ">") are used for redirection and the backtick/grave accent ("`") is used for command substitution. In SQL, the percent is used as a wildcard character.
Бегство
Термин "экранирование метасимвола" означает лишение метасимвола его специального значения, заставляя его интерпретироваться буквально. Например, в PCRE точка (".") обозначает любой одиночный символ. Регулярное выражение "A.C" будет соответствовать "ABC", "A3C" или даже "A C". Однако, если точку экранировать, она потеряет свой метасимвольный смысл и будет интерпретироваться буквально как ".", в результате чего регулярное выражение "A\.C" будет соответствовать только строке "A.C". Обычно символ экранируют, добавляя перед ним обратную косую черту ("\"). В других средах могут использоваться другие методы, например, в MS DOS/Windows Command Prompt, где вместо этого используется символ каретки ("^").
The term "to escape a metacharacter" means to make the metacharacter ineffective (to strip it of its special meaning), causing it to have its literal meaning. For example, in PCRE, a dot (".") stands for any single character. The regular expression "A. C" will match "ABC", "A3C", or even "A C". However, if the "." is escaped, it will lose its meaning as a metacharacter and will be interpreted literally as ". ", causing the regular expression "A\. C" to only match the string "A. C". The usual way to escape a character in a regex and elsewhere is by prefixing it with a backslash ("\"). Other environments may employ different methods, like MS DOS/Windows Command Prompt, where a caret ("^") is used instead.