nginx正則表達式
【轉自】:http://blog.csdn.net/gzh0222/article/details/7845981
^~ 標識符后面跟一個(gè)字符串。Nginx將在這個(gè)字符串匹配后停止進(jìn)行正則表達式的匹配(location指令中正則表達式的匹配的結果優(yōu)先使用),如:location ^~ /images/,你希望對/images/這個(gè)目錄進(jìn)行一些特別的操作,如增加expires頭,防盜鏈等,但是你又想把除了這個(gè)目錄的圖片外的所有圖片只進(jìn)行增加expires頭的操作,這個(gè)操作可能會(huì )用到另外一個(gè)location,例如:location ~* \.(gif|jpg|jpeg)$,這樣,如果有請求/images/1.jpg,nginx如何決定去進(jìn)行哪個(gè)location中的操作呢?結果取決于標識符^~,如果你這樣寫(xiě):location /images/,這樣nginx會(huì )將1.jpg匹配到location ~* \.(gif|jpg|jpeg)$這個(gè)location中,這并不是你需要的結果,而增加了^~這個(gè)標識符后,它在匹配了/images/這個(gè)字符串后就停止搜索其它帶正則的location。 = 表示精確的查找地址,如location = /它只會(huì )匹配uri為/的請求,如果請求為/index.html,將查找另外的location,而不會(huì )匹配這個(gè),當然可以寫(xiě)兩個(gè)location,location = /和location /,這樣/index.html將匹配到后者,如果你的站點(diǎn)對/的請求量較大,可以使用這個(gè)方法來(lái)加快請求的響應速度。
@ 表示為一個(gè)location進(jìn)行命名,即自定義一個(gè)location,這個(gè)location不能被外界所訪(fǎng)問(wèn),只能用于Nginx產(chǎn)生的子請求,主要為error_page和try_files。
~ 為區分大小寫(xiě)的匹配。 ~* 不區分大小寫(xiě)的匹配(匹配firefox的正則同時(shí)匹配FireFox)。 !~ 不匹配的 !~* 不匹配的
. 匹配除換行符以外的任意字符 \w 匹配字母或數字或下劃線(xiàn)或漢字 \s 匹配任意的空白符 \d 匹配數字 \b 匹配單詞的開(kāi)始或結束 ^ 匹配字符串的開(kāi)始 $ 匹配字符串的結束
* 重復零次或更多次 + 重復一次或更多次 ? 重復零次或一次 {n} 重復n次 {n,} 重復n次或更多次 {n,m} 重復n到m次 *? 重復任意次,但盡可能少重復 +? 重復1次或更多次,但盡可能少重復 ?? 重復0次或1次,但盡可能少重復 {n,m}? 重復n到m次,但盡可能少重復 {n,}? 重復n次以上,但盡可能少重復
\W 匹配任意不是字母,數字,下劃線(xiàn),漢字的字符 \S 匹配任意不是空白符的字符 \D 匹配任意非數字的字符 \B 匹配不是單詞開(kāi)頭或結束的位置 [^x] 匹配除了x以外的任意字符 [^aeiou] 匹配除了aeiou這幾個(gè)字母以外的任意字符
捕獲 (exp) 匹配exp,并捕獲文本到自動(dòng)命名的組里 (?<name>exp) 匹配exp,并捕獲文本到名稱(chēng)為name的組里,也可以寫(xiě)成(?'name'exp) (?:exp) 匹配exp,不捕獲匹配的文本,也不給此分組分配組號 零寬斷言 (?=exp) 匹配exp前面的位置 (?<=exp) 匹配exp后面的位置 (?!exp) 匹配后面跟的不是exp的位置 (?<!exp) 匹配前面不是exp的位置 注釋 (?#comment) 這種類(lèi)型的分組不對正則表達式的處理產(chǎn)生任何影響,用于提供注釋讓人閱讀
- 上一篇 ?Linux 基礎正則表達式和擴展正則表達式
- 下一篇 ?JavaScript正則表達式用法匯總