2015-06-15 29 views
2

我正在寫一個爬蟲,它必須遵循像URL:如何編寫與包含數字的URL匹配的模式?

http://www.example.com/121-blah-blah 
http://www.example.com/721-blah-blah 
http://www.example.com/1512-blah-blah 

但不喜歡的網址:

http://www.example.com/category/1512-blah-blah 

應該如何我寫的模式來做到這一點?路徑將以數字開頭。

這是我走到這一步:

%r[(\d+] 
+0

是否需要只在URL的路徑部分或網址的任何地方查找號碼? –

+0

@NicNilov只在路徑部分 – Aric

回答

0

如果數字都將是後「/」,那麼正則表達式就會越簡單

regex = /\/\d+/ 

然後你就可以匹配這個使用以下字符串

if regex =~ url != nil then # returns nil if no match else returns index of first character matched 
2

將字符串解析爲URI對象,並將regex僅應用於路徑部分。轉換爲URI增加了額外檢查的好處,如uri.absolute?。它還處理uri的各種可選部分,例如端口號或基本身份驗證值。

uri = URI.parse(your_string) 
uri.path =~ %r{^/\d+} 

在正則表達式的^/確保比賽是在字符串的開頭和斜線後。 \d+匹配任意數量的數字。如果你想在路徑的任何地方的一些比賽,用這個:

uri.path =~ %r{\d+} 

如下語句返回一個整數,這意味着第一個匹配的索引或nil,如果沒有匹配。

您可能想要查看Rubular以調整正則表達式。

+0

我想與像這樣的'http:// www.example.com/1512-blah-blah'這樣的url匹配,但是想排除這樣的URL。 'http:// www.example.com/category/1512-blah-blah' – Aric

+1

然後使用'uri.path =〜%r {^/\ d +}',它就可以做到這一點。 –

0

怎麼樣是一個有點具體是這樣的:

http[s]?:\/\/[\w\.]+\/\d[\w-]* 

See example

相關問題