在正規表示式中有三個匹配優先的量詞,分別是*
,+
,?
。
所謂匹配優先,其實就是日常說的貪婪,它們會盡可能的匹配更多的字元,換一種說法,它們一般會匹配大於下限,它們好像一群好久沒吃飽飯的窮苦人民,有東西吃,當然要盡可能吃的更多啊!
比如說,現在有這樣乙個字串
hello man!
如果我用.*
去匹配,得到的將會是hello man!
整個串。因為*
是匹配優先的。、
儘管如此,有的時候國家利益大於個人利益,在有些情況下,它們不得不交還 「糧食」 給國家,儘管是匹配優先。
比如說我有下面的這個字串
hello man1234
現在我用.*\d
去匹配,你會發現.*
只匹配了前面的hello man
,後面的1234
沒有被匹配到,這是為啥,*
不是匹配優先的量詞嗎?
是是,但是有的時候匹配優先的量詞也要以大局為重啊!它的匹配過程是這樣的,首先執行的.*
會因為匹配優先把hello man1234
都匹配到,但是現在輪到\d
了,如果.*
把所有的都匹配完了,那麼整個正則就不可能匹配成功了,於是.*
開始交還4,發現還是不能滿足,於是交還3,發現還是不能滿足,一直到交還了1,現在可以滿足匹配了,於是返回匹配成功。
所以說,匹配優先量詞只是在以大局為重的情況下進行的匹配優先!!
大橘為重!!
nginx的優先匹配規則
nginx的優先匹配規則 以 開頭表示精確匹配 如 a 中只匹配根目錄結尾的請求,後面不能帶任何字串。開頭表示uri以某個常規字串開頭,不是正則匹配 開頭表示區分大小寫的正則匹配 開頭表示不區分大小寫的正則匹配 通用匹配,如果沒有其它匹配,任何請求都會匹配到 順序不等於優先順序 location l...
nginx匹配規則說明以及匹配的優先順序
語法規則location uri 模式 含義location uri 表示精確匹配,只有完全匹配上才能生效 location uri 開頭對url路徑進行字首匹配,並且在正則之前。location pattern 開頭表示區分大小寫的正則匹配 location pattern 開頭表示不區分大小寫的...
nginx匹配規則說明以及匹配的優先順序
語法規則 location uri 模式 含義location uri 表示精確匹配,只有完全匹配上才能生效 location uri 開頭對url路徑進行字首匹配,並且在正則之前。location pattern 開頭表示區分大小寫的正則匹配 location pattern 開頭表示不區分大小寫...