任何人都可以幫忙理解爲什麼有^
和$
?我知道^
的意思是「開始於」,$
的意思是「結束於」。我只是不知道我們爲什麼需要這個?您能否列出一些符合以下重寫的URI並向我顯示帶有或不帶有這兩個符號的區別?
rewrite ^/users/(.*)$ /show?user=$1? last;
任何人都可以幫忙理解爲什麼有^
和$
?我知道^
的意思是「開始於」,$
的意思是「結束於」。我只是不知道我們爲什麼需要這個?您能否列出一些符合以下重寫的URI並向我顯示帶有或不帶有這兩個符號的區別?
rewrite ^/users/(.*)$ /show?user=$1? last;
這些是爲了確保在執行重寫時整個URL是匹配的。
例如,沒有^
,這些URL會匹配:
/admin/users/foo
/whatever/users/bar
在這種情況下,$
是不是真的需要,因爲*
是貪婪(.
匹配任何與*
比賽不亞於可能)。即使沒有$
,這也會導致表達式與剩餘的輸入相匹配。在一個更受限制的情況下,例如:
rewrite ^/users/dan$ /show?user=dan last;
的$
是出於同樣的原因很重要。沒有它,這些URL會匹配:
/users/dan/delete
/users/dan/profile
/users/danny
但隨着它,只有準確網址/users/dan
將匹配。
爲什麼^/users /(.*)$使我感到困惑的原因是我認爲每個請求URI都以/開頭,現在我明白^/users表示「請求URI以整個部分開始」/ users「」,另一個原因是我不知道爲什麼它仍然加$,我也認爲在這種情況下沒有必要,你解決了我多年來的困惑。謝謝。 – 2014-09-25 02:14:58
Duplicate http://stackoverflow.com/questions/22937618/reference-what-does-this-regex-mean – Unihedron 2014-09-24 12:21:50
閱讀關於鏈接問題的答案,特別是關於「錨點」部分。 – 2014-09-24 12:27:51
我確切地知道^和$是什麼意思,我只是需要示例來澄清它們,這種聯繫對我來說並不清楚我的困惑。但還是謝謝。 – 2014-09-25 02:08:47