Программирование на языке Ruby
Шрифт:
Возможно, у вас появилось искушение поставить в конец всего выражения модификатор
Почему такое выражение не годится? Взгляните на этот пример и поймете:
Обратите внимание, что метод
3.14.4 Сопоставление с числовыми константами
Сопоставление с простым целым десятичным числом — самое простое. Число состоит из необязательного знака и последовательности цифр (правда, Ruby позволяет использовать знак подчеркивания в качестве разделителя цифр). Отметим, что первая цифра не должна быть нулем, иначе число будет интерпретироваться как восьмеричное.
Целые константы в других системах счисления обрабатываются аналогично. Образцы для шестнадцатеричных и двоичных чисел сделаны не чувствительными к регистру, так как они содержат букву:
Сопоставить число с плавающей точкой в обычной нотации несколько сложнее. Последовательности цифр по обе стороны десятичной точки необязательны, но хотя бы одна цифра должна быть:
Образец для чисел, записанных в научной нотации, основан на предыдущем:
Эти образцы могут оказаться полезны, если вы хотите убедиться, что строка содержит число, перед тем как пытаться преобразовать ее.
3.14.5 Сопоставление с датой и временем
Пусть надо выделить дату и время, записанные в формате
Но такой образец распознает некоторые некорректные даты и отвергает правильные. Следующий вариант более избирателен. Обратите внимание, как мы строим его путем интерполяции мелких регулярных выражений в более крупное:
Вот как можно вызвать это регулярное выражение из метода
Разумеется, все это можно было сделать с помощью одного большого регулярного выражения:
Обратите внимание на конструкцию
3.14.6. Обнаружение повторяющихся слов в тексте
В этом разделе мы реализуем детектор повторяющихся слов. Повторение одного и того же слова два раза подряд — типичная опечатка. Следующий код распознает такие ситуации:
Обратите внимание на модификатор
Архил...? 4
4. Архил...?
Фантастика:
фэнтези
попаданцы
альтернативная история
рейтинг книги
Ботаник 2
2. Ботаник
Фантастика:
фэнтези
боевая фантастика
рейтинг книги
Курсант: назад в СССР
1. Курсант
Фантастика:
попаданцы
альтернативная история
рейтинг книги
Идеальный мир для Лекаря 29
29. Лекарь
Фантастика:
юмористическое фэнтези
аниме
фэнтези
рейтинг книги
Бастард
1. Последняя жизнь
Фантастика:
фэнтези
героическая фантастика
попаданцы
рейтинг книги
Двойник Короля 2
2. Двойник Короля
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
рейтинг книги
Мастер 9
9. Мастер
Фантастика:
боевая фантастика
попаданцы
технофэнтези
аниме
фэнтези
рейтинг книги
Источники силы
4. Иной в голове
Фантастика:
боевая фантастика
рпг
аниме
рейтинг книги
Битва за Изнанку
7. Бедовый
Фантастика:
городское фэнтези
мистика
рейтинг книги
Тихие ночи
2. Глэрд
Фантастика:
фэнтези
боевая фантастика
попаданцы
рейтинг книги
Я князь. Книга XVIII
18. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
рейтинг книги
Мэр
Проза:
современная проза
рейтинг книги