The re engine does not want to repeat an empty string, for fear that something like (.*)* could be matching the tokens ... "" "" "" "" "" "" Of course, that's harmless with a question mark, although still somewhat strange.