Лев К: чем проще, тем лучше. регулярки - не панацея, а время затраченное на strpos мизерно по сравнению с тем, сколько будет тратить неправильная (если вдруг) регулярка с кучей ветвлений
Лев К: я бы по рекомендовал сперва делать strpos($rab,"bbb:") и если оно положительно, то матчить часть "(?<=bbb\:\s)([\d\.]{10})", а иначе матчить "([\d\.]{10})".
В первом случае он сначала пытается найти ([\d\.]{10}) перед которым идёт (?<=bbb\:\s). не находит bbb и переходит к условию ([\d\.]{10}) под него уже попадает 27.09.2016 - его и возвращает. Регулярка проверяет посимвольно слева направо, сравнивая с каждым символом оба условия. То есть иными словами регулярка не ищет сперва одну часть себя, а дотом другую, она сразу ищет обе и что раньше попадётся — то и будет
Александр Андреев: Можно ещё "ядро" движка оформить как синглтон во избежании создания множества копий одного. Фактически, тот же алокатор. Стоит или не стоит — зависит от предназначения и задачи.
Лев К: да. будете дату как-то использовать и если она будет не по формату, то необходимо выдать ошибку об этом. поэтому, либо вы с помощью регулярки определяете формат, либо позже.
Лев К: 2. вы можете получить и валидировать дату по формату либо в регулярке, либо всё равно будете её проверять после. Необязательно делать это здесь.