2012-06-28 58 views
0

我不確定在WWW :: Mechanize中使用的url_regex的正確語法是什麼。WWW中的正則表達式:: Perl中的Mechanize

我收集從一個網頁,使用HTTP啓動的所有環節://,他們是格式如下:

http://google.com 

,而不是,

http://google.com/dir/ 
http://google.com/dir/dir2/ 

所以,我使用以下內容:

@links=$mech->find_all_links(url_regex=>qr/^http:\/\/.*?\//) 

而這仍然捕獲其中包含子路徑的URL。

我已經在regexpal.com上測試了我的正則表達式,它的效果很好。但由於某種原因,url_regex需要不同的語法。

謝謝。

回答

1

你應該使用:

@links=$mech->find_all_links(url_regex=>qr/^http:\/\/[^\/]*\/?$/) 

曰:

字符串必須開始^http://隨後字符別人的任意組合(甚至無/空)[^\/]*跟着比削減通過可選斜槓\/?結尾$

+0

謝謝。有用。你能解釋一下你的正則表達式嗎?我的正則表達式不起作用,因爲dot也會匹配正斜槓字符,所以我們需要在字符類中否定它。這是原因嗎? –

+0

@NeonFlash - 答案已更新,並附有評論 –