<?php $string = '{{{year}}}{{{month+1}}}'; preg_match_all('/{{{([yYmMdD])(?:(?<=[Yy])ear|(?<=[Mm])onth|(?<=[Dd])ay)(?:([-+])([1-9]+))?}}}/m', $string, $matches); //print_r(array_filter($matches));
Standard input is empty
Array ( [0] => Array ( [0] => {{{year}}} [1] => {{{month+1}}} ) [1] => Array ( [0] => y [1] => m ) [2] => Array ( [0] => [1] => + ) [3] => Array ( [0] => [1] => 1 ) )