allow leading +, * and ?, as well as singular [ in patterns
support for | patterns