CCF URL對映
阿新 • • 發佈:2019-02-11
URL 對映是諸如 Django、Ruby on Rails 等網頁框架 (web frameworks) 的一個重要元件。對於從瀏覽器發來的 HTTP 請求,URL 對映模組會解析請求中的 URL 地址,並將其分派給相應的處理程式碼。現在,請你來實現一個簡單的 URL 對映功能。
本題中 URL 對映功能的配置由若干條 URL 對映規則組成。當一個請求到達時,URL 對映功能會將請求中的 URL 地址按照配置的先後順序逐一與這些規則進行匹配。當遇到第一條完全匹配的規則時,匹配成功,得到匹配的規則以及匹配的引數。若不能匹配任何一條規則,則匹配失敗。
本題輸入的 URL 地址是以斜槓 / 作為分隔符的路徑,保證以斜槓開頭。其他合法字元還包括大小寫英文字母、阿拉伯數字、減號 -、下劃線 _ 和小數點 .。例如,/person/123/ 是一個合法的 URL 地址,而 /person/123? 則不合法(存在不合法的字元問號 ?)。另外,英文字母區分大小寫,因此 /case/ 和 /CAse/ 是不同的 URL 地址。
對於 URL 對映規則,同樣是以斜槓開始。除了可以是正常的 URL 地址外,還可以包含引數,有以下 3 種:
字串 <str>:用於匹配一段字串,注意字串裡不能包含斜槓。例如,abcde0123。
整數 <int>:用於匹配一個不帶符號的整數,全部由阿拉伯數字組成。例如,01234。
路徑 <path>:用於匹配一段字串,字串可以包含斜槓。例如,abcd/0123/。
以上 3 種引數都必須匹配非空的字串。簡便起見,題目規定規則中 <str> 和 <int> 前面一定是斜槓,後面要麼是斜槓,要麼是規則的結束(也就是該引數是規則的最後一部分)。而 <path> 的前面一定是斜槓,後面一定是規則的結束。無論是 URL 地址還是規則,都不會出現連續的斜槓。
本題中 URL 對映功能的配置由若干條 URL 對映規則組成。當一個請求到達時,URL 對映功能會將請求中的 URL 地址按照配置的先後順序逐一與這些規則進行匹配。當遇到第一條完全匹配的規則時,匹配成功,得到匹配的規則以及匹配的引數。若不能匹配任何一條規則,則匹配失敗。
本題輸入的 URL 地址是以斜槓 / 作為分隔符的路徑,保證以斜槓開頭。其他合法字元還包括大小寫英文字母、阿拉伯數字、減號 -、下劃線 _ 和小數點 .。例如,/person/123/ 是一個合法的 URL 地址,而 /person/123? 則不合法(存在不合法的字元問號 ?)。另外,英文字母區分大小寫,因此 /case/ 和 /CAse/ 是不同的 URL 地址。
對於 URL 對映規則,同樣是以斜槓開始。除了可以是正常的 URL 地址外,還可以包含引數,有以下 3 種:
字串 <str>:用於匹配一段字串,注意字串裡不能包含斜槓。例如,abcde0123。
整數 <int>:用於匹配一個不帶符號的整數,全部由阿拉伯數字組成。例如,01234。
路徑 <path>:用於匹配一段字串,字串可以包含斜槓。例如,abcd/0123/。
以上 3 種引數都必須匹配非空的字串。簡便起見,題目規定規則中 <str> 和 <int> 前面一定是斜槓,後面要麼是斜槓,要麼是規則的結束(也就是該引數是規則的最後一部分)。而 <path> 的前面一定是斜槓,後面一定是規則的結束。無論是 URL 地址還是規則,都不會出現連續的斜槓。