[轉]nginx正則說明

轉自 http://blog.csdn.net/gzh0222/article/details/7845981

^~     標識符後面跟一個字符串。Nginx將在這個字符串匹配後停止進行正則表達式的匹配(location指令中正則表達式的匹配的結果優先使用),如:location ^~ /images/,你希望對/images/這個目錄進行一些特別的操作,如增加expires頭,防盜鏈等,但是你又想把除了這個目錄的圖片外的所有圖片只進行增加expires頭的操作,這個操作可能會用到另外一個location,例如:location ~* \.(gif|jpg|jpeg)$,這樣,如果有請求/images/1.jpg,nginx如何決定去進行哪個location中的操作呢?結果取決於標識符^~,如果你這樣寫:location /images/,這樣nginx會將1.jpg匹配到location ~* \.(gif|jpg|jpeg)$這個location中,這並不是你需要的結果,而增加了^~這個標識符後,它在匹配了/images/這個字符串後就停止搜索其它帶正則的location。
=      表示精確的查找地址,如location = /它只會匹配uri爲/的請求,如果請求爲/index.html,將查找另外的location,而不會匹配這個,當然可以寫兩個location,location = /和location /,這樣/index.html將匹配到後者,如果你的站點對/的請求量較大,可以使用這個方法來加快請求的響應速度。

@      表示爲一個location進行命名,即自定義一個location,這個location不能被外界所訪問,只能用於Nginx產生的子請求,主要爲error_page和try_files。

~      爲區分大小寫的匹配。
~*     不區分大小寫的匹配(匹配firefox的正則同時匹配FireFox)。
!~     不匹配的
!~*    不匹配的

.     匹配除換行符以外的任意字符
\w     匹配字母或數字或下劃線或漢字
\s     匹配任意的空白符
\d     匹配數字
\b     匹配單詞的開始或結束
^     匹配字符串的開始
$     匹配字符串的結束

*     重複零次或更多次
+     重複一次或更多次
?     重複零次或一次
{n}     重複n次
{n,}     重複n次或更多次
{n,m}     重複n到m次
*?     重複任意次,但儘可能少重複
+?     重複1次或更多次,但儘可能少重複
??     重複0次或1次,但儘可能少重複
{n,m}?     重複n到m次,但儘可能少重複
{n,}?     重複n次以上,但儘可能少重複

\W     匹配任意不是字母,數字,下劃線,漢字的字符
\S     匹配任意不是空白符的字符
\D     匹配任意非數字的字符
\B     匹配不是單詞開頭或結束的位置
[^x]     匹配除了x以外的任意字符
[^aeiou]     匹配除了aeiou這幾個字母以外的任意字符

捕獲     (exp)     匹配exp,並捕獲文本到自動命名的組裏
(?<name>exp)     匹配exp,並捕獲文本到名稱爲name的組裏,也可以寫成(?'name'exp)
(?:exp)     匹配exp,不捕獲匹配的文本,也不給此分組分配組號
零寬斷言     (?=exp)     匹配exp前面的位置
(?<=exp)     匹配exp後面的位置
(?!exp)     匹配後面跟的不是exp的位置
(?<!exp)     匹配前面不是exp的位置
註釋     (?#comment)     這種類型的分組不對正則表達式的處理產生任何影響,用於提供註釋讓人閱讀


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章