Программирование на языке Ruby
Шрифт:
Фразеология, применяемая при описании регулярных выражений, изобилует яркими терминами: жадный (greedy), неохотный (reluctant), ленивый (lazy) и собственнический (possessive). Самым важным является различие между жадными и нежадными выражениями.
Рассмотрим следующий фрагмент кода. На первый взгляд, это регулярное выражение должно сопоставляться со строкой
Причина состоит в том, что оператор
Итак, оператор
Я не сумел найти разумных примеров применения конструкций
Дополнительная информация о кванторах содержится в разделе 3.13.
3.6. Позитивное и негативное заглядывание вперед
Понятно, что регулярное выражение сопоставляется со строкой линейно (осуществляя при необходимости возвраты). Поэтому существует понятие «текущего положения» в строке, это аналог указателя файла или курсора.
Термин «заглядывание» означает попытку сопоставить часть строки, находящуюся дальше текущего положения. Это утверждение нулевой длины, поскольку даже если соответствие будет найдено, никакого продвижения по строке не произойдет (то есть текущее положение не изменится).
В следующем примере строка
Вот пример негативного заглядывания:
В данном случае строка
3.7. Обратные ссылки
Каждая заключенная в круглые скобки часть регулярного выражения является отдельным соответствием. Они нумеруются, и есть несколько способов сослаться на такие части по номерам. Сначала рассмотрим традиционный «некрасивый» способ.
Сослаться на группы можно с помощью глобальных переменных
Эти переменные нельзя использовать в подставляемой строке в методах
Почему такая конструкция не работает? Потому что аргументы
Отсюда совершенно понятно, что значения
В такой ситуации на помощь приходят специальные коды
Обратите внимание на одиночные (твердые) кавычки в предыдущем примере. Если бы мы воспользовались двойными (мягкими) кавычками, не приняв никаких мер предосторожности, то элементы, которым предшествует обратная косая черта, были бы интерпретированы как восьмеричные числа:
Поэтика Ф. М. Достоевского: опыт интерпретации
Научно-образовательная:
языкознание
рейтинг книги
Бастард Императора. Том 14
14. Бастард Императора
Фантастика:
городское фэнтези
аниме
фэнтези
попаданцы
рейтинг книги
Геррон
Проза:
современная проза
рейтинг книги
Эволюционер из трущоб. Том 6
6. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
рейтинг книги
Ведьмак (сборник)
Фантастика:
фэнтези
рейтинг книги
Сага о Копье: Омнибус. Том I
1. Сага о Копье
Фантастика:
фэнтези
рейтинг книги
Новые Миры Роберта Шекли. Том 1
Фантастика:
научная фантастика
рейтинг книги
Жена по ошибке
Любовные романы:
любовно-фантастические романы
рейтинг книги
Буря Жнеца
7. «Малазанская империя»
Фантастика:
фэнтези
рейтинг книги
Крейсер «Очаков»
Боевые корабли мира
Научно-образовательная:
история
военная история
рейтинг книги
Угрюм-река
Проза:
историческая проза
рейтинг книги
Симфонии
Поэзия:
поэзия
рейтинг книги