Twindo: функционал, который предполагается общим для разных типов объектов надо выносить в отдельные функции, как в моем примере. Сложно сначала сломать свое мышление, заточенное под наследование, но этот подход имеет свои плюсы.
Максим Тимофеев: точка это любой символ, кроме перевода строки, а звездочка это квантификатор к нему. Т.е., данный класс символов может повторяться любое количество раз (от 0 до бесконечности).