Программирование на языке Ruby
Шрифт:
Впрочем, я немного уклонился от истины. Эти якоря на самом деле соответствуют началу и концу не строки символов (string), а строки текста (line). Вот что произойдет, если те же самые образцы применить к строке, внутри которой есть символы новой строки:
Однако имеются якоря
Якорь
Можно также устанавливать соответствие на границе слова с помощью якоря
He существует способа отличить начало слова от конца.
3.5. Кванторы
Немалая часть аппарата регулярных выражений связана с обработкой необязательных элементов и повторений. Элемент, за которым следует вопросительный знак, необязателен; он может присутствовать или отсутствовать, а общее соответствие зависит от прочих частей регулярного выражения. (Этот квантор имеет смысл применять только к подвыражению ненулевой длины, но не к якорям.)
Элементы часто повторяются неопределенное число раз (для формулировки этого условия служит квантор
Еще один типичный случай — образец, повторяющийся нуль или более раз. Конечно, это условие можно выразить с помощью кванторов
Но есть и способ лучше. Требуемое поведение описывается квантором
Как распознать американский номер социального страхования? С помощью такого образца:
Но это не вполне понятно. Лучше явно сказать, сколько цифр должно быть в каждой группе. Это можно сделать, указав число повторений в фигурных скобках:
Необязательно, что такой образец будет короче, но он более понятен читателю программы.
Можно также использовать диапазоны, границы которых разделены запятой. Предположим, что номер телефона в Элбонии состоит из двух частей: в первой может быть от трех до пяти цифр, а во второй — от трех до семи. Вот как выглядит соответствующий образец:
Нижняя и верхняя границы диапазона необязательны (но хотя бы одна должна быть задана):
Ясно, что кванторы
Королевский крест
10. Тайный Город
Фантастика:
боевая фантастика
рейтинг книги
Шайтан Иван 4
4. Шайтан Иван
Фантастика:
попаданцы
альтернативная история
рейтинг книги
Кромвель
611. Жизнь замечательных людей
Проза:
историческая проза
рейтинг книги