72158e7b

Специальные символы в регулярных выражениях


Таблица 4.1 Специальные символы в регулярных выражениях

Символ

Значение



\Один из следующих вариантов:

  • Для символов, которые обычно рассматриваются литерально, указывает, что следующий символ является специальным и не должен интерпретироваться литерально.

    Например, /b/ совпадает с символом 'b'. При помещении символа backslash перед b, то есть /\b/, символ становится специальным, обозначая границу слова.

  • Для символов, которые обычно рассматриваются как специальные, указывает что следующий символ не является специальным и должен интерпретироваться литерально.

    Например, * это специальный символ, который означает 0 или более совпадений с вхождением предыдущего символа; например, /a*/ означает 0 или более символов а. Для подстановки * литерально, поставьте передним backslash; например, /a\*/ совпадает с 'a*'.

^Совпадает с началом ввода или строки.

Например, /^A/ не совпадает с 'A' в строке "an A," но совпадает с первой А в строке "An A".

$Совпадает с концом ввода или строки.

Например, /t$/ не совпадает с 't' в "eater", но совпадает в "eat".

*Предшествующий символ совпадает 0 или более раз.

Например, /bo*/ совпадает с 'boooo' в "A ghost booooed" и с 'b' в "A bird warbled", но не совпадает в "A goat grunted".

+Предшествующий символ совпадает 1 или более раз. Эквивалентно {1,}.

Например, /a+/ совпадает с 'a' в "candy" and all the a's in "caaaaaaandy."

?Предшествующий символ совпадает 0 или 1 раз.

Например, /e?le?/ совпадает с 'el' в "angel" и с 'le' в "angle."

.(Десятичная точка) совпадает с любым одиночным символом, кроме символа новой строки.

Например, /.n/ совпадает с 'an' и с 'on' в "nay, an apple is on the tree", но не с 'nay'.

(x)Совпадает с 'x' и запоминает совпадение.

Например, /(foo)/ совпадает (и запоминает) с 'foo' в "foo bar." Совпавшая подстрока может быть вызвана из результирующего массива элементов [1], ..., [n] или из свойств $1, ..., $9 предопределённого объекта RegExp.

x|yСовпадает с 'x' или с 'y'.

Например, /green|red/ совпадает с 'green' в "green apple" и с 'red' в "red apple."

{n}Где n это положительное целое. Предшествующий символ совпадает точно n раз.

Например, /a{2}/ не совпадает с 'a' в "candy", но совпадает со всеми 'a' в "caandy" и с первыми двумя 'a' в "caaandy."

{n,}Где n это положительное целое. Предшествующий символ совпадает как минимум n раз.

Например, /a{2,} не совпадает с 'a' в "candy", но совпадает со всеми 'a' в "caandy" и в "caaaaaaandy."

{n,m}Где n и m это положительные целые. Предшествующий символ совпадает как минимум n и максимум m раз.

Например, /a{1,3}/ не совпадает ни с чем в "cndy", совпадает с 'a' in "candy," первыми двумя 'a' в "caandy" и первыми тремя 'a' в "caaaaaaandy" Обратите внимание, что в "caaaaaaandy" совпадает только "aaa", хотя строка-оригинал содержит больше символов 'a'.

[xyz]Набор символов. Совпадает с любым одним из символов патэрна. Вы можете специфицировать диапазон символов, используя дефис.

Например, [abcd] эквивалентно [a-d]. Совпадает с 'b' в "brisket" и с 'c' в "ache".

[^xyz]Отрицание набора символов. То есть совпадение со всем, кроме того, что находится в скобках. Вы можете специфицировать диапазон символов, используя дефис.

Например, [^abc] это то же самое, что [^a-c]. Первоначально совпадает с 'r' в "brisket" и с 'h' в "chop".

[\b]Совпадает с backspace. (Не путайте с \b.)
\bСовпадает с границей слова, такой как пробел/space или символ новой строки. (Не путайте с [\b].)

Например, /\bn\w/ совпадает с 'no' in "noonday"; /\wy\b/ совпадает с 'ly' in "possibly yesterday".

\BСовпадает с не-границей слова.

Например, /\w\Bn/ совпадает с 'on' в "noonday"; /y\B\w/ совпадает с 'ye' в "possibly yesterday".

\cXГде X это управляющий символ. Совпадает с управляющим символом в строке.

Например, /\cM/ совпадает с комбинацией control-M.

\dСовпадает с цифрой. Эквивалентно [0-9].

Например, /\d/ или /[0-9]/ совпадает с '2' в строке "B2 is the suite number".

\DСовпадает с не-цифрой. Эквивалентно [^0-9].

Например, /\D/ или /[^0-9]/ совпадает с 'B' в "B2 is the suite number".

\fСовпадает с form-feed.
\nСовпадает с linefeed.
\rСовпадает с carriage return.
\sСовпадает с одиночным пробельным символом, включая space, tab, form feed, line feed.

Эквивалентно [ \f\n\r\t\v].

Например, /\s\w*/ совпадает с ' bar' в "foo bar".

\SСовпадает с одиночным символом, отличным от пробела. Эквивалентно [^ \f\n\r\t\v].

Например, /\S\w*/ совпадает с 'foo' в "foo bar."

\tСовпадает с tab.
\vСовпадает с vertical tab.
\wСовпадает с любым алфавитно-цифровым символом, включая символ подчёркивания. Эквивалентно [A-Za-z0-9_].

Например, /\w/ совпадает с  'a' в "apple", с '5' в "$5.28" и с '3' в "3D."

\W Совпадает с любым не-алфавитно-цифровым символом. Эквивалентно [^A-Za-z0-9_].

Например, /\W/ или /[^$A-Za-z0-9_]/ совпадает с '%' в "50%."

\nГде n это положительное целое. Обратная ссылка на последнее совпадение подстроки с n в скобках из регулярного выражения (с учётом левых скобок).

Например, /apple(,)\sorange\1/ совпадает с 'apple, orange,' в "apple, orange, cherry, peach."

Более сложный пример идёт далее после таблицы.

Примечание: Если количество левых скобок меньше числа, специфицированного в \n, то \n считается восьмеричной escape-последовательностью, как описано в следующем ряду.

\ooctal
\xhex
Где \ooctal  это 8-ричное escape-значение или где \xhex  это 16-ричное escape-значение. Даёт возможность внедрять ASCII-коды в регулярные выражения.



Содержание раздела