Привязки

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

Например, в выражении er\b часть \b соответствует границе слова. Выражение соответствует сочетанию er в слове never, а не в слове verb.

Принцип действия привязки

В следующей таблице содержится список привязок регулярных выражений и их значений:

Знак

Описание

^

Соответствует позиции в начале входной строки. Если символ m (поиск в нескольких строках) имеет флаги, то символ ^ также соответствует позиции после символов \n и \r.

$

Соответствует позиции в конце входной строки. Если символ m (поиск в нескольких строках) имеет флаги, то символ $ также соответствует позиции перед символами \n и \r.

\b

Соответствует границе слова, то есть позиции между словом и пробелом.

\B

Соответствует позиции, отличной от границы слова.

Нельзя использовать квантификатор с привязкой. Поскольку непосредственно перед или после знака новой строки или границы слова не может существовать более одной позиции, использование выражений, похожих на ^*, запрещено.

Чтобы получить соответствие для текста в начале текстовой строки, поставьте в начале регулярного выражения знак "^". Не путайте данное применение знака "^" с его использованием в выражении в квадратных скобках.

Чтобы получить соответствие для текста в конце текстовой строки, поставьте в конце регулярного выражения знак "$".

В следующем регулярном выражении демонстрируется использование привязок при поиске заголовков глав. Это выражение соответствует заголовку главы, содержащему не более двух цифр в номере и расположенному в начале строки:

/^Chapter [1-9][0-9]{0,1}/

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

/^Chapter [1-9][0-9]{0,1}$/

Соответствие границам слов обеспечивается немного иначе, но благодаря ему становится доступно одно очень важное применение регулярных выражений. Граница слова — это позиция между словом и пробелом. Ее противоположность — это любая позиция, отличная от границы слова. Следующее выражение соответствует первым трем знакам в слове Chapter, поскольку они стоят после границы слова:

/\bCha/

Положение оператора "\b" является критически важным. Если он находится в начале искомой строки, то совпадение ищется в начале слова. Если он находится в конце строки, то совпадение ищется в конце слова. Например, следующее выражение соответствует строке ter в слове Chapter, поскольку она находится перед границей слова:

/ter\b/

Следующее выражение соответствует строке apt в слове Chapter, но не в слове aptitude:

/\Bapt/

В слове Chapter строка apt имеет позицию, отличную от границы слова, но в слове aptitude, она находится на границе слова. Положение оператора "\B", обозначающего позицию, отличную от границы слова, не имеет значения, поскольку он задает совпадение, не относящееся к началу или концу слова.

См. также

Другие ресурсы

Знакомство с регулярными выражениями