- Символ для поиска в начале строки
- Символ для поиска в конце строки
- Поиск других символов относительно границ слова
В этом уроке мы познакомимся со специальными символами, которые помогают уточнить позиции символов в строке и подстроках.
Рассмотрим следующий пример:
/java
/
java
Здесь слово java
совпадает со строкой java
— это простое условие. Важно помнить, что регулярные выражения ищут совпадения не в строках, а в подстроках.
Представим, что мы ищем в строке, в которой есть и другие символы, кроме искомых. В таком случае проверка может показать, что строки сопоставились, хотя на самом деле мы этого не планировали:
/java
/
asdfjava
asdf
Для управления поиском символов в строке существуют специальные символы, которые мы изучим далее.
Символ для поиска в начале строки
Если в строке поиска перед искомыми символами поставить ^
, то мы найдем только символы, которые находятся в начале строки:
/^java
/
java
ruby clojurescript javascript
Если мы уберем ^
, то найдем два сопоставления, в том числе в последней подстроке:
/java
/
java
ruby clojurescript java
script
Символ для поиска в конце строки
Это символ — $
. Посмотрим пример без $
, в котором мы получаем два сопоставления:
/script
/
java ruby clojurescript
javascript
Теперь добавим $
и получим всего одно совпадение — в конце строки:
/script$
/
java ruby clojurescript javascript
Поиск других символов относительно границ слова
Предположим, что нам нужно найти только те символы a
, которые находятся в конце слова. Для этого наберем в шаблонной строке a\b
:
/a\b
/
java
ruby clojurescript javascript
Используя тот же символ в верхнем регистре \B
, мы можем инвертировать поиск. Так мы найдем все символы a
, не находящиеся в конце слова:
/a\B
/
ja
va ruby clojurescript ja
va
script
Если поставить символ \b
перед искомым, то мы найдем символы, находящиеся в начале слова:
/\bj
/
j
ava ruby clojurescript j
avascript
Снова используем инвертирование:
/\Bj
/
java ruby cloj
urescriptj
javascript
Добавим к предыдущему примеру еще один символ j
после clojurescriptj
. Теперь мы найдем только символ j
, который находится ни в начале слова, ни в конце:
/\Bj\B
/
java ruby cloj
urescriptj
j javascript
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.