- Символ для поиска в начале строки
- Символ для поиска в конце строки
- Поиск других символов относительно границ слова
В этом уроке мы познакомимся со специальными символами, которые помогают уточнить позиции символов в строке и подстроках.
Рассмотрим следующий пример:
/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
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.