? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
matches the character -
literally (case sensitive)
This hyphen is treated literally, which might be confusing for others. Consider escaping it or placing at the start or end of the class!
+ matches the character + literally (case sensitive)