The "?" has special meaning in regular expressions. You need to escape it by putting a "\" before it. (really two because the \ is a special character in Java and needs escaping itself.)
In the regular expression world, ? means 0 or 1 of the previous character.