2012-12-27 49 views
0

我們如果我想捕捉「set_of_random_characters_everything_possible.randomextension」將[^/\n]+$工作的取像正則表達式,發現一個網址的最後一部分

www.url.com/some_thing/random_numbers_letters_everything_possible/set_of_random_characters_everything_possible.randomextension 

的網址是什麼? (解決方案取自Trying to get the last part of a URL with Regex

我的問題是:「\ n」部分表示什麼(即使沒有它,它也可以工作)?而且,如果url具有除了「/」之外的最偶然的字符組合,它是否安全?

+0

\ n = unix上的新行(在Windows上是\ r \ n) –

回答

2

首先,請注意,www.url.com/some_thing/random_numbers_letters_everything_possible/set_of_random_characters_everything_possible.randomextension不是像前面的http://這樣的網址。

其次,不要自己解析網址。你在用什麼語言?您可能不想使用正則表達式,而是使用已編寫,測試和調試的現有模塊。

如果您使用PHP,您需要parse_url函數。

如果您使用Perl,您需要URI模塊。

+1

你讓我發現了一套我可以真正使用的新功能,謝謝。 我結束了使用basename() – user1722791

+0

我很高興你發現它很有用。一般來說,如果這是一個常見的問題,比如「我怎樣才能得到URL的一部分」,你的第一個想法應該是「我敢打賭,已經有功能爲我照顧了。」最好的代碼是您不必編寫,測試和調試自己的代碼。 –

+0

這是我一直假設的東西,但我永遠不會記得。 – user1722791

1

看一看這樣的解釋:http://regex101.com/r/jG2jN7

基本上是怎麼回事,這裏「匹配除了斜槓和新生產線的任何字符,無限1倍」。人們將\r\n插入到否定字符類中,因爲在某些程序中,否定字符類將匹配除插入到其中的任何內容。因此[^/]在這種情況下會匹配新行。

例如,如果文本中出現換行符,則換行後將不會獲取數據。

然而,這不是你的情況。您需要爲此行爲使用s標誌(PCRE_DOTALL)

TL; DR:您可以將其保留或刪除,這無關緊要。

請問如果有什麼不清楚的地方,或者我已經解釋過它有點馬虎。

+0

不,謝謝,你很清楚,我明白了所有這一切。 – user1722791

+0

@ user1722791:太好了!如果這是你之後的事,請接受答案。 –

相關問題