?的第一个用法,匹配0次或1次。 ?第二个含义,作为正则的懒惰模式。 正则有两种模式,一种为贪婪模式(默认),另外一种为懒惰模式,以下为例: (abc)dfe(gh) 对上面这个字符串使用(.*)将会匹配整个字符串,因为正则默认是尽可能多的匹配。 虽然(abc)满足我们的表达式,但是(abc)dfe(gh)也同样满足,所以正则会匹配多的那个。 如果我们只想匹配(abc)和(gh)就需要用到以下的表达式 (.*?) 在重复元字符*或者+后面跟一个?,作用就是在满足的条件下尽可能少匹配。
参考资料:http://www.jb51.net/article/16829.htm