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