support negative dates
simplify regex
support unbounded years
remove unnecessary parenthesis
preprocessor: replace dates with dynDates