2012-06-19 55 views
1

我在Perl中遇到了一個正則表達式問題。Perl正則表達式匹配字符串中的URI

假設我收到一個字符串,其中嵌入了URI。我想存儲每個唯一的URI。

我的問題是該字符串中的URI可能具有不同的格式。有些可能是mylightsaber24.com,其他可能是http://www.companyabc.co.uk甚至www.thisisawebsite.com/index.html?someparameters

出於這個原因,無論Regexp::Common qw /URI/Regexp::Common qw/net/失敗我:(

任何指針?

非常感謝!

積分爲識別www.nomansland.comnomansland.com基本上是相同的條目。

+3

僅供參考,* www.nomanskland.com *和* nomansland.com *可能是diferent條目。 – m0skit0

+0

對於字符串只是主機名的情況你想做什麼?檢查[公共後綴列表](http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1)結尾處的任何內容將會花費很多工作量,任何帶點的東西都會聲稱「St.Augustine」,「BBC」和「3.14」都是網址。 – Borodin

+0

找到並安裝了http://search.cpan.org/~mschwern/URI-Find-20111103/lib/URI/Find/Schemeless.pm,這似乎夠用了。我會看看我遇到的邊緣案例會遇到什麼問題。 – msallge

回答

1

這些CPAN模塊是怎麼回事:

+0

'Regexp :: Common :: URI :: http'將只匹配完整的絕對URI而不是純粹的主機名。 'URI'用於驗證完整字符串表示有效的URL,但不會查找字符串中的所有URL。 – Borodin