2011-01-26 387 views
3

在Apache的配置文件,還有就是避免gzip壓縮的圖像的行:是什麼意思?

SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary 

我不相信有可能存在一個.gif文件名一樣myfile.*:gif

那麼,是什麼?:是什麼意思?

回答

10

這個特定部分(?:gif|jpe?g|png)幾乎是完全一樣的事情(gif|jpe?g|png)

的此不同的是,第一個將無法「捕捉」括號中的組。換句話說,在查看比賽時,第一個例子中的內容不會被包含爲特殊組。

通常,當你在括號括起來的項目,它被稱爲「捕獲組」。換句話說,在查看將正則表達式與文本進行匹配的結果時,括號中的內容將被放入一個「組」中,以供以後檢查。當您使用(?:stuff)時,括號內的內容仍然組合在正則表達式中,但它不被視爲捕獲組。

這可能是有益的,如果你想了一堆圖片的文件名匹配,機器人無法捕捉不是文件名多:

"([^.]\.)(?:gif|png|tiff)" 

在匹配時對這個表達式文件,只有文件名會被捕獲。文件擴展名不會是因爲它不在捕獲組中。

+0

+1我刪除我的答案,因爲這是更好的解釋,只是添加的鏈接,可幫助... http://www.regular-expressions.info/brackets.html – Vojta 2011-01-26 16:50:39