Программирование на языке Ruby
Шрифт:
Возможно, у вас появилось искушение поставить в конец всего выражения модификатор
Почему такое выражение не годится? Взгляните на этот пример и поймете:
Обратите внимание, что метод
3.14.4 Сопоставление с числовыми константами
Сопоставление с простым целым десятичным числом — самое простое. Число состоит из необязательного знака и последовательности цифр (правда, Ruby позволяет использовать знак подчеркивания в качестве разделителя цифр). Отметим, что первая цифра не должна быть нулем, иначе число будет интерпретироваться как восьмеричное.
Целые константы в других системах счисления обрабатываются аналогично. Образцы для шестнадцатеричных и двоичных чисел сделаны не чувствительными к регистру, так как они содержат букву:
Сопоставить число с плавающей точкой в обычной нотации несколько сложнее. Последовательности цифр по обе стороны десятичной точки необязательны, но хотя бы одна цифра должна быть:
Образец для чисел, записанных в научной нотации, основан на предыдущем:
Эти образцы могут оказаться полезны, если вы хотите убедиться, что строка содержит число, перед тем как пытаться преобразовать ее.
3.14.5 Сопоставление с датой и временем
Пусть надо выделить дату и время, записанные в формате
Но такой образец распознает некоторые некорректные даты и отвергает правильные. Следующий вариант более избирателен. Обратите внимание, как мы строим его путем интерполяции мелких регулярных выражений в более крупное:
Вот как можно вызвать это регулярное выражение из метода
Разумеется, все это можно было сделать с помощью одного большого регулярного выражения:
Обратите внимание на конструкцию
3.14.6. Обнаружение повторяющихся слов в тексте
В этом разделе мы реализуем детектор повторяющихся слов. Повторение одного и того же слова два раза подряд — типичная опечатка. Следующий код распознает такие ситуации:
Обратите внимание на модификатор
Грань риска
Детективы:
триллеры
рейтинг книги
Варяги и Русь
Всемирная история в романах
Проза:
историческая проза
рейтинг книги
Учитель из прошлого тысячелетия
6. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
рейтинг книги
Круг чтения. Афоризмы и наставления
Золотой фонд эзотерики
Проза:
афоризмы
рейтинг книги
Сатанизм для интеллигенции
Научно-образовательная:
религиоведение
рейтинг книги
Американская фантастика
Библиотека литературы США
Фантастика:
научная фантастика
рейтинг книги
Невольничий караван
Приключения:
прочие приключения
рейтинг книги
Война Цветов
10. Мастера меча и магии
Фантастика:
фэнтези
рейтинг книги
Супервольф
Секретный фарватер
Проза:
современная проза
рейтинг книги
Сент Ив
Приключения:
исторические приключения
рейтинг книги