*?是一个整体,它是“忽略优先”的,也就是匹配这个位置的字符时先尝试匹配后面的位置,不能匹配再尝试匹配被*?修饰的位置。而单独一个*,是“匹配优先”的,也就是它会一次匹配尽可能多的字符,到它已经不能匹配了,再来匹配它后面的位置,如果后面不能匹配,它就把已经被它匹配的字符一个个地“吐”出来,供后面的表达式来匹配。这叫做正则表达式的“回溯”。