Регулярные выражения (Regexp)
2026-02-26 18:57 Diff

В этом уроке мы познакомимся со специальными символами, которые помогают уточнить позиции символов в строке и подстроках.

Рассмотрим следующий пример:

/java/

java

Здесь слово java совпадает со строкой java — это простое условие. Важно помнить, что регулярные выражения ищут совпадения не в строках, а в подстроках.

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

/java/

asdfjava asdf

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

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

Если в строке поиска перед искомыми символами поставить ^, то мы найдем только символы, которые находятся в начале строки:

/^java/

java ruby clojurescript javascript

Если мы уберем ^, то найдем два сопоставления, в том числе в последней подстроке:

/java/

java ruby clojurescript javascript

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

Это символ — $. Посмотрим пример без $, в котором мы получаем два сопоставления:

/script/

java ruby clojurescript javascript

Теперь добавим $ и получим всего одно совпадение — в конце строки:

/script$/

java ruby clojurescript javascript

Поиск других символов относительно границ слова

Предположим, что нам нужно найти только те символы a, которые находятся в конце слова. Для этого наберем в шаблонной строке a\b:

/a\b/

java ruby clojurescript javascript

Используя тот же символ в верхнем регистре \B, мы можем инвертировать поиск. Так мы найдем все символы a, не находящиеся в конце слова:

/a\B/

java ruby clojurescript javascript

Если поставить символ \b перед искомым, то мы найдем символы, находящиеся в начале слова:

/\bj/

java ruby clojurescript javascript

Снова используем инвертирование:

/\Bj/

java ruby clojurescriptj javascript

Добавим к предыдущему примеру еще один символ j после clojurescriptj. Теперь мы найдем только символ j, который находится ни в начале слова, ни в конце:

/\Bj\B/

java ruby clojurescriptjj javascript