1. 程式人生 > >php 正則表示式中的 .*? 表示什麼意思

php 正則表示式中的 .*? 表示什麼意思

我們知道我 .* 是任意字元,有的時候比較困惑在加個?什麼意思。

?是非貪婪模式
.*會匹配後面的一切字元,就是到結束的意思
加?後就是不貪婪模式,這時要看?後邊的字元是什麼了,如.*?"的意思是遇到雙引號則匹配結束

例如:

現在我要匹配出圖片中的src,圖片格式為:"圖片01<img src='http://www.baidu.com/uploads/123.jpg' width='200' height='200'/>,圖片02<img src='http://www.baidu.com/uploads/888.jpg' width='200' height='200'/>"

正則表示式為:'#<img\s+src=[\'|"](.*?)[\'|"].*?[/]?>#',假如(.*?)括號中沒有?匹配結果為 http://www.baidu.com/uploads/123.jpg' width='200' height='200 ,加上?匹配結果為http://www.baidu.com/uploads/123.jpg,很明顯從匹配結果開始到?號後面的單引號當前匹配就結束了,防止了貪婪匹配。