is `([+\-\.])?` needed? Looks like it will match `++` too.